From c37f541e52d8bc2ce957483c7d1b12c85e9ee29a Mon Sep 17 00:00:00 2001 From: matt-j-griffin <maattgriffin@outlook.com> Date: Sat, 22 Jul 2023 11:45:34 +0100 Subject: [PATCH] 3a bir --- BCB/Cheang et al/Figure_3a/Figure_3a.bir | 2699 ++++++++++++++++++++++ 1 file changed, 2699 insertions(+) create mode 100644 BCB/Cheang et al/Figure_3a/Figure_3a.bir diff --git a/BCB/Cheang et al/Figure_3a/Figure_3a.bir b/BCB/Cheang et al/Figure_3a/Figure_3a.bir new file mode 100644 index 0000000..4776db0 --- /dev/null +++ b/BCB/Cheang et al/Figure_3a/Figure_3a.bir @@ -0,0 +1,2699 @@ +0001954f: program +00019550: sub foo(foo_result) +000195fd: foo_result :: out u32 = low:32[RAX] + +000143a1: +000143a3: goto %0001344b + +0001344b: +00013451: RAX := pad:64[mem[0x180008223]] +00013473: CF := low:32[RCX] < low:32[RAX] +00013494: when ~CF goto %00013491 +00019551: goto %00013503 + +00013491: +000134a3: RAX := 63:8[RAX].0 +000134c2: #12582290 := mem[RSP, el]:u64 +000134c6: RSP := RSP + 8 +000134c9: call #12582290 with noreturn + +00013503: +00013509: RAX := pad:64[low:32[RCX]] +0001350f: RDX := 0x180000000 +0001351b: RCX := pad:64[mem[RAX + 0x180008230]] +00013523: RAX := pad:64[mem[0x180008218]] +00013539: #12582289 := extend:64[low:32[RCX]] * extend:64[low:32[RAX]] +0001353d: RCX := pad:64[low:32[#12582289]] +0001355f: RAX := pad:64[mem[RCX + 0x180008228]] +0001356c: #12582288 := mem[RSP, el]:u64 +00013570: RSP := RSP + 8 +00013573: call #12582288 with noreturn + +00019552: sub sub_180001005(sub_180001005_result) +000195fe: sub_180001005_result :: out u32 = low:32[RAX] + +00004a00: +00004a03: goto %00004a01 + +00004a01: +00004a0e: mem := mem with [RSP + 8, el]:u64 <- RBX +00004a1a: mem := mem with [RSP + 0x10, el]:u64 <- RSI +00004a28: #12582911 := RDI +00004a2c: RSP := RSP - 8 +00004a32: mem := mem with [RSP, el]:u64 <- #12582911 +00004a50: RSP := RSP - 0x20 +00004a74: RDI := R8 +00004a7c: RBX := pad:64[low:32[RDX]] +00004a84: RSI := RCX +00004a9c: #12582907 := low:32[RDX] - 1 +00004ab8: ZF := 0 = #12582907 +00004abf: when ~ZF goto %00004abc +00019553: goto %0001953d + +0001953d: +00019546: RSP := RSP - 8 +0001954b: mem := mem with [RSP, el]:u64 <- 0x180001781 +0001954d: call @sub_1800010fa with return %00004abc + +00004abc: +00004ac8: R8 := RDI +00004ad0: RDX := pad:64[low:32[RBX]] +00004ad8: RCX := RSI +00004ae2: RBX := mem[RSP + 0x30, el]:u64 +00004aec: RSI := mem[RSP + 0x38, el]:u64 +00004b0d: RSP := RSP + 0x20 +00004b38: RDI := mem[RSP, el]:u64 +00004b3c: RSP := RSP + 8 +00004b41: call @sub_1800015b8 with noreturn + +00019554: sub sub_18000100f(sub_18000100f_result) +000195ff: sub_18000100f_result :: out u32 = low:32[RAX] + +000118b5: +000118c4: goto %000118c2 + +000118c2: +000118c9: RAX := 0x180008198 +000118d6: #12582417 := mem[RSP, el]:u64 +000118da: RSP := RSP + 8 +000118dd: call #12582417 with noreturn + +00019555: sub sub_180001019(sub_180001019_result) +00019600: sub_180001019_result :: out u32 = low:32[RAX] + +0001191d: +00011920: goto %0001191e + +0001191e: +0001193d: RSP := RSP - 0x28 +00011965: RCX := 0 +00011982: RSP := RSP - 8 +00011987: mem := mem with [RSP, el]:u64 <- 0x180001AF7 +00011989: call @sub_18000105a with return %0001198b + +0001198b: +0001199b: #12582412 := low:8[RAX] +000119b1: ZF := 0 = #12582412 +000119bb: RAX := 63:8[RAX].pad:8[~ZF] +000119dc: RSP := RSP + 0x28 +00011a08: #12582407 := mem[RSP, el]:u64 +00011a0c: RSP := RSP + 8 +00011a0f: call #12582407 with noreturn + +00019556: sub sub_18000101e(sub_18000101e_result) +00019601: sub_18000101e_result :: out u32 = low:32[RAX] + +0001207b: +0001207d: goto %000118ef + +000118ef: +000118f3: RAX := 0x1800081A8 +00011900: #12582416 := mem[RSP, el]:u64 +00011904: RSP := RSP + 8 +00011907: call #12582416 with noreturn + +00019557: sub sub_18000102d(sub_18000102d_result) +00019602: sub_18000102d_result :: out u32 = low:32[RAX] + +00011813: +00011821: call @sub_1800027a0 with noreturn + +00019558: sub sub_180001032(sub_180001032_result) +00019603: sub_180001032_result :: out u32 = low:32[RAX] + +00011823: +00011825: goto %00004edb + +00004edb: +00004ee5: RAX := 0 +00004f04: #12582878 := mem[RSP, el]:u64 +00004f08: RSP := RSP + 8 +00004f0b: call #12582878 with noreturn + +00019559: sub sub_18000103c(sub_18000103c_result) +00019604: sub_18000103c_result :: out u32 = low:32[RAX] + +0000dd6b: +0000dd7a: goto %0000dd78 + +0000dd78: +0000dd87: #12582819 := RBX +0000dd8b: RSP := RSP - 8 +0000dd91: mem := mem with [RSP, el]:u64 <- #12582819 +0000ddaf: RSP := RSP - 0x20 +0000dde3: #12582815 := mem[0x1800081D0, el]:u64 - 0xFFFFFFFFFFFFFFFF +0000ddff: ZF := 0 = #12582815 +0000de07: RBX := RCX +0000de0e: when ~ZF goto %0000de0b +0001955a: goto %0000df91 + +0000de0b: +0000de17: RDX := RBX +0000de1d: RCX := 0x1800081D0 +0000de28: RSP := RSP - 8 +0000de2d: mem := mem with [RSP, el]:u64 <- 0x180001E81 +0000de2f: call @sub_18000277c with return %0000de31 + +0000df91: +0000df9a: RSP := RSP - 8 +0000df9f: mem := mem with [RSP, el]:u64 <- 0x180001E70 +0000dfa1: call @sub_180002788 with return %0000dfa3 + +0000dfa3: +0000dfa5: goto %0000de31 + +0000de31: +0000de3b: RDX := 0 +0000de5f: #12582813 := low:32[RAX] +0000de75: ZF := 0 = #12582813 +0000de81: RDX := if ZF then RBX else 0 +0000de89: RAX := RDX +0000deaa: RSP := RSP + 0x20 +0000ded5: RBX := mem[RSP, el]:u64 +0000ded9: RSP := RSP + 8 +0000dee6: #12582808 := mem[RSP, el]:u64 +0000deea: RSP := RSP + 8 +0000deed: call #12582808 with noreturn + +0001955b: sub sub_180001041(sub_180001041_result) +00019605: sub_180001041_result :: out u32 = low:32[RAX] + +0000dfa7: +0000dfa9: goto %00004dad + +00004dad: +00004db1: RCX := 0x180008180 +00004db7: call mem[0x18000A028, el]:u64 with noreturn + +0001955c: sub sub_180001046(sub_180001046_result) +00019606: sub_180001046_result :: out u32 = low:32[RAX] + +0000dfab: +0000dfad: call @sub_1800027ac with noreturn + +0001955d: sub sub_180001055(sub_180001055_result) +00019607: sub_180001055_result :: out u32 = low:32[RAX] + +0000f077: +0000f079: call @sub_1800027a4 with noreturn + +0001955e: sub sub_18000105a(sub_18000105a_result) +00019608: sub_18000105a_result :: out u32 = low:32[RAX] + +0000f07b: +0000f07e: goto %0000f07c + +0000f07c: +0000f08b: #12582710 := RBX +0000f08f: RSP := RSP - 8 +0000f095: mem := mem with [RSP, el]:u64 <- #12582710 +0000f0b3: RSP := RSP - 0x20 +0000f0e7: #12582706 := mem[0x1800081C9] +0000f103: ZF := 0 = #12582706 +0000f10b: RBX := pad:64[low:32[RCX]] +0000f112: when ~ZF goto %0000f10f +00019568: goto %000141dd + +000141dd: +000141f3: #12582218 := low:32[RCX] - 1 +000141f7: CF := low:32[RCX] < 1 +0001420f: ZF := 0 = #12582218 +00014217: when ~(CF | ZF) goto %0000f181 +00019567: goto %0001421b + +0000f181: +0000f185: RCX := 5 +0000f191: RSP := RSP - 8 +0000f196: mem := mem with [RSP, el]:u64 <- 0x180001D0E +0000f198: call @sub_18000114a with return %00014145 + +00014145: +00014147: call @interrupt:#3 with noreturn + +00014149: +0001414b: call @interrupt:#3 with noreturn + +0001414d: +0001414f: call @interrupt:#3 with noreturn + +00014151: +00014153: call @interrupt:#3 with noreturn + +00014155: +00014157: call @interrupt:#3 with noreturn + +00014159: +0001415b: call @interrupt:#3 with noreturn + +0001415d: +0001415f: call @interrupt:#3 with noreturn + +00014161: +00014163: call @interrupt:#3 with noreturn + +00014165: +00014167: call @interrupt:#3 with noreturn + +00014169: +0001416b: call @interrupt:#3 with noreturn + +0001416d: +0001416f: call @interrupt:#3 with noreturn + +00014171: +00014173: call @interrupt:#3 with noreturn + +00014175: +00014177: call @interrupt:#3 with noreturn + +00014179: +0001417b: call @interrupt:#3 with noreturn + +0001417d: +0001417f: call @interrupt:#3 with noreturn + +00014181: +00014183: call @interrupt:#3 with noreturn + +00014185: +00014187: call @interrupt:#3 with noreturn + +00014189: +0001418b: call @interrupt:#3 with noreturn + +0001418d: +0001418f: call @interrupt:#3 with noreturn + +00014191: +00014193: call @interrupt:#3 with noreturn + +00014195: +00014197: call @interrupt:#3 with noreturn + +00014199: +0001419b: call @interrupt:#3 with noreturn + +0001419d: +0001419f: call @interrupt:#3 with noreturn + +000141a1: +000141a3: call @interrupt:#3 with noreturn + +000141a5: +000141a7: call @interrupt:#3 with noreturn + +000141a9: +000141ab: call @interrupt:#3 with noreturn + +000141ad: +000141af: call @interrupt:#3 with noreturn + +000141b1: +000141b3: call @interrupt:#3 with noreturn + +000141b5: +000141b7: call @interrupt:#3 with noreturn + +000141b9: +000141bb: call @interrupt:#3 with noreturn + +000141bd: +000141bf: call @interrupt:#3 with noreturn + +000141c1: +000141c3: call @interrupt:#3 with noreturn + +000141c5: +000141c7: call @interrupt:#3 with noreturn + +000141c9: +000141cb: call @interrupt:#3 with noreturn + +000141cd: +000141cf: call @interrupt:#3 with noreturn + +000141d1: +000141d3: call @interrupt:#3 with noreturn + +000141d5: +000141d7: call @interrupt:#3 with noreturn + +000141d9: +000141db: call @interrupt:#3 with noreturn + +0001421b: +00014224: RSP := RSP - 8 +00014229: mem := mem with [RSP, el]:u64 <- 0x180001C9F +0001422b: call @sub_180001087 with return %0001422d + +0001422d: +0001423d: #12582216 := low:32[RAX] +00014253: ZF := 0 = #12582216 +0001425a: when ZF goto %00014257 +00019565: goto %000142b5 + +000142b5: +000142c5: #12582213 := low:32[RBX] +000142db: ZF := 0 = #12582213 +000142e1: when ~ZF goto %00014257 +00019564: goto %000142e5 + +00014257: +00014265: YMM0 := 255:128[YMM0].mem[0x180006890, el]:u128 +00014271: RAX := 0xFFFFFFFFFFFFFFFF +0001428d: mem := mem with [0x1800081D0, el]:u128 <- low:128[YMM0] +00014297: mem := mem with [0x1800081E0, el]:u64 <- 0xFFFFFFFFFFFFFFFF +000142a1: mem := mem with [0x1800081E8, el]:u128 <- low:128[YMM0] +000142ab: mem := mem with [0x1800081F8, el]:u64 <- 0xFFFFFFFFFFFFFFFF +00019563: goto %000142ad + +000142e5: +000142e9: RCX := 0x1800081D0 +000142f4: RSP := RSP - 8 +000142f9: mem := mem with [RSP, el]:u64 <- 0x180001CB3 +000142fb: call @sub_180002776 with return %000142fd + +000142fd: +0001430d: #12582211 := low:32[RAX] +00014323: ZF := 0 = #12582211 +0001432a: when ~ZF goto %00014327 +00019562: goto %00014351 + +00014351: +00014355: RCX := 0x1800081E8 +00014360: RSP := RSP - 8 +00014365: mem := mem with [RSP, el]:u64 <- 0x180001CC3 +00014367: call @sub_180002776 with return %00014369 + +00014369: +00014379: #12582209 := low:32[RAX] +0001438f: ZF := 0 = #12582209 +00014395: when ZF goto %000142ad +00019561: goto %00014327 + +000142ad: +000142b3: mem := mem with [0x1800081C9] <- 1 +00019560: goto %0000f10f + +0000f10f: +0000f11b: RAX := high:56[RAX].1 +0001955f: goto %0000f11d + +00014327: +00014339: RAX := 63:8[RAX].0 +0001434f: goto %0000f11d + +0000f11d: +0000f13c: RSP := RSP + 0x20 +0000f167: RBX := mem[RSP, el]:u64 +0000f16b: RSP := RSP + 8 +0000f178: #12582701 := mem[RSP, el]:u64 +0000f17c: RSP := RSP + 8 +0000f17f: call #12582701 with noreturn + +00019569: sub sub_180001082(sub_180001082_result) +00019609: sub_180001082_result :: out u32 = low:32[RAX] + +0001360b: +0001361a: goto %00013618 + +00013618: +00013627: #12582286 := RBX +0001362b: RSP := RSP - 8 +00013631: mem := mem with [RSP, el]:u64 <- #12582286 +0001364f: RSP := RSP - 0x20 +00013683: #12582282 := mem[0x1800081C8] +0001369f: ZF := 0 = #12582282 +000136a9: RBX := high:56[RBX].low:8[RCX] +000136b0: when ZF goto %000136ad +0001956b: goto %00013779 + +00013779: +00013789: #12582276 := low:8[RDX] +0001379f: ZF := 0 = #12582276 +000137a5: when ~ZF goto %000136e1 +0001956a: goto %000136ad + +000136ad: +000136bc: RSP := RSP - 8 +000136c1: mem := mem with [RSP, el]:u64 <- 0x180001E3E +000136c3: call @sub_1800010e6 with return %000136c5 + +000136c5: +000136cd: RCX := high:56[RCX].low:8[RBX] +000136d8: RSP := RSP - 8 +000136dd: mem := mem with [RSP, el]:u64 <- 0x180001E45 +000136df: call @sub_180001046 with return %000136e1 + +000136e1: +000136e7: RAX := high:56[RAX].1 +00013708: RSP := RSP + 0x20 +00013733: RBX := mem[RSP, el]:u64 +00013737: RSP := RSP + 8 +00013744: #12582277 := mem[RSP, el]:u64 +00013748: RSP := RSP + 8 +0001374b: call #12582277 with noreturn + +0001956c: sub sub_180001087(sub_180001087_result) +0001960a: sub_180001087_result :: out u32 = low:32[RAX] + +0000d5dd: +0000d5ec: goto %0000d5ea + +0000d5ea: +0000d626: #12582866 := mem[0x180008060, el]:u32 +0000d645: ZF := 0 = #12582866 +0000d64f: RAX := 0.pad:8[~ZF] +0000d65c: #12582864 := mem[RSP, el]:u64 +0000d660: RSP := RSP + 8 +0000d663: call #12582864 with noreturn + +0001956d: sub sub_18000108c(sub_18000108c_result) +0001960b: sub_18000108c_result :: out u32 = low:32[RAX] + +0000d705: +0000d708: call @sub_180001d34 with noreturn + +0001956e: sub sub_180001096(sub_180001096_result) +0001960c: sub_180001096_result :: out u32 = low:32[RAX] + +00011bc9: +00011bd7: call @sub_1800027a8 with noreturn + +0001956f: sub sub_1800010a5(sub_1800010a5_result) +0001960d: sub_1800010a5_result :: out u32 = low:32[RAX] + +000116dd: +000116eb: call @sub_1800027b0 with noreturn + +00019570: sub sub_1800010aa(sub_1800010aa_result) +0001960e: sub_1800010aa_result :: out u32 = low:32[RAX] + +000116ed: +000116ef: call @sub_1800027a4 with noreturn + +00019571: sub sub_1800010b4(sub_1800010b4_result) +0001960f: sub_1800010b4_result :: out u32 = low:32[RAX] + +00004ca8: +00004cb7: goto %00004cb5 + +00004cb5: +00004cd4: RSP := RSP - 0x28 +00004d08: #12582889 := low:32[RDX] - 1 +00004d24: ZF := 0 = #12582889 +00004d2b: when ~ZF goto %00004d28 +00019573: goto %00018a55 + +00018a55: +00018a6b: #12582158 := mem[0x180006880, el]:u64 +00018a87: ZF := 0 = #12582158 +00018a8d: when ~ZF goto %00004d28 +00019572: goto %00018a91 + +00018a91: +00018a9d: #12582156 := mem[0x18000A020, el]:u64 +00018aa1: RSP := RSP - 8 +00018aa6: mem := mem with [RSP, el]:u64 <- 0x180001925 +00018aa9: call #12582156 with return %00004d28 + +00004d28: +00004d32: RAX := 1 +00004d53: RSP := RSP + 0x28 +00004d7f: #12582884 := mem[RSP, el]:u64 +00004d83: RSP := RSP + 8 +00004d86: call #12582884 with noreturn + +00019574: sub sub_1800010c3(sub_1800010c3_result) +00019610: sub_1800010c3_result :: out u32 = low:32[RAX] + +0000fc76: +0000fc84: goto %0000e925 + +0000e925: +0000e929: RAX := 1 +0000e936: #12582755 := mem[RSP, el]:u64 +0000e93a: RSP := RSP + 8 +0000e93d: call #12582755 with noreturn + +00019575: sub sub_1800010cd(sub_1800010cd_result) +00019611: sub_1800010cd_result :: out u32 = low:32[RAX] + +000109c4: +000109c6: goto %0001008e + +0001008e: +00010098: mem := mem with [RSP + 8, el]:u64 <- RBX +000100a6: #12582586 := RDI +000100aa: RSP := RSP - 8 +000100b0: mem := mem with [RSP, el]:u64 <- #12582586 +000100ce: RSP := RSP - 0x20 +000100f0: RBX := 0x1800070A0 +000100f6: RDI := 0x1800071A8 +000100fb: goto %000100f9 + +000100f9: +0001011c: CF := RBX < 0x1800071A8 +0001013d: when CF goto %0001013a +00019578: goto %000101d4 + +000101d4: +000101dc: RBX := mem[RSP + 0x30, el]:u64 +000101fd: RSP := RSP + 0x20 +00010228: RDI := mem[RSP, el]:u64 +0001022c: RSP := RSP + 8 +00010239: #12582571 := mem[RSP, el]:u64 +0001023d: RSP := RSP + 8 +00010240: call #12582571 with noreturn + +0001013a: +00010148: RAX := mem[RBX, el]:u64 +0001015a: #12582580 := RAX +00010170: ZF := 0 = #12582580 +00010177: when ZF goto %00010174 +00019577: goto %000101ba + +000101ba: +000101c6: #12582575 := mem[0x18000B020, el]:u64 +000101ca: RSP := RSP - 8 +000101cf: mem := mem with [RSP, el]:u64 <- 0x180002208 +000101d2: call #12582575 with return %00010174 + +00010174: +00010199: RBX := RBX + 8 +00019576: goto %000100f9 + +00019579: sub sub_1800010d7(sub_1800010d7_result) +00019612: sub_1800010d7_result :: out u32 = low:32[RAX] + +000111a9: +000111ab: goto %00010282 + +00010282: +0001028c: mem := mem with [RSP + 8, el]:u64 <- RBX +0001029a: #12582570 := RDI +0001029e: RSP := RSP - 8 +000102a4: mem := mem with [RSP, el]:u64 <- #12582570 +000102c2: RSP := RSP - 0x20 +000102e4: RBX := 0x1800072C0 +000102ea: RDI := 0x1800073C8 +000102ef: goto %000102ed + +000102ed: +00010310: CF := RBX < 0x1800073C8 +00010331: when CF goto %0001032e +0001957c: goto %000103c8 + +000103c8: +000103d0: RBX := mem[RSP + 0x30, el]:u64 +000103f1: RSP := RSP + 0x20 +0001041c: RDI := mem[RSP, el]:u64 +00010420: RSP := RSP + 8 +0001042d: #12582555 := mem[RSP, el]:u64 +00010431: RSP := RSP + 8 +00010434: call #12582555 with noreturn + +0001032e: +0001033c: RAX := mem[RBX, el]:u64 +0001034e: #12582564 := RAX +00010364: ZF := 0 = #12582564 +0001036b: when ZF goto %00010368 +0001957b: goto %000103ae + +000103ae: +000103ba: #12582559 := mem[0x18000B020, el]:u64 +000103be: RSP := RSP - 8 +000103c3: mem := mem with [RSP, el]:u64 <- 0x180002254 +000103c6: call #12582559 with return %00010368 + +00010368: +0001038d: RBX := RBX + 8 +0001957a: goto %000102ed + +0001957d: sub sub_1800010e1(sub_1800010e1_result) +00019613: sub_1800010e1_result :: out u32 = low:32[RAX] + +000111b1: +000111b3: call @sub_1800027a8 with noreturn + +0001957e: sub sub_1800010e6(sub_1800010e6_result) +00019614: sub_1800010e6_result :: out u32 = low:32[RAX] + +000111b5: +000111b7: call @sub_1800027ac with noreturn + +0001957f: sub sub_1800010fa(sub_1800010fa_result) +00019615: sub_1800010fa_result :: out u32 = low:32[RAX] + +000111c5: +000111c8: goto %000111c6 + +000111c6: +000111d3: mem := mem with [RSP + 0x20, el]:u64 <- RBX +000111e1: #12582460 := RBP +000111e5: RSP := RSP - 8 +000111eb: mem := mem with [RSP, el]:u64 <- #12582460 +000111f3: RBP := RSP +00011211: RSP := RSP - 0x20 +00011235: RAX := mem[0x180008020, el]:u64 +0001123b: RBX := 0x2B992DDFA232 +00011258: #12582456 := RAX - 0x2B992DDFA232 +00011277: ZF := 0 = #12582456 +0001127e: when ~ZF goto %0001127b +00019581: goto %000113b1 + +000113b1: +000113c7: mem := mem with [RBP + 0x18, el]:u64 <- 0 +000113e9: RCX := RBP + 0x18 +000113f7: #12582449 := mem[0x18000A018, el]:u64 +000113fb: RSP := RSP - 8 +00011400: mem := mem with [RSP, el]:u64 <- 0x180001866 +00011403: call #12582449 with return %00011405 + +00011405: +0001140d: RAX := mem[RBP + 0x18, el]:u64 +00011419: mem := mem with [RBP + 0x10, el]:u64 <- RAX +00011427: #12582448 := mem[0x18000A010, el]:u64 +0001142b: RSP := RSP - 8 +00011430: mem := mem with [RSP, el]:u64 <- 0x180001874 +00011433: call #12582448 with return %00011435 + +00011435: +0001143b: RAX := pad:64[low:32[RAX]] +00011459: mem := + mem with [RBP + 0x10, el]:u64 <- mem[RBP + 0x10, el]:u64 ^ RAX +00011481: #12582446 := mem[0x18000A008, el]:u64 +00011485: RSP := RSP - 8 +0001148a: mem := mem with [RSP, el]:u64 <- 0x180001880 +0001148d: call #12582446 with return %0001148f + +0001148f: +00011495: RAX := pad:64[low:32[RAX]] +0001149d: RCX := RBP + 0x20 +000114bb: mem := + mem with [RBP + 0x10, el]:u64 <- mem[RBP + 0x10, el]:u64 ^ RAX +000114e3: #12582444 := mem[0x18000A000, el]:u64 +000114e7: RSP := RSP - 8 +000114ec: mem := mem with [RSP, el]:u64 <- 0x180001890 +000114ef: call #12582444 with return %000114f1 + +000114f1: +000114f9: RAX := pad:64[mem[RBP + 0x20, el]:u32] +00011501: RCX := RBP + 0x10 +0001151a: RAX := RAX << 0x20 +00011547: RAX := RAX ^ mem[RBP + 0x20, el]:u64 +00011573: RAX := RAX ^ mem[RBP + 0x10, el]:u64 +0001159d: RAX := RAX ^ RCX +000115cd: RAX := RAX & 0xFFFFFFFFFFFF +000115e9: RCX := 0x2B992DDFA233 +00011606: #12582437 := RAX - 0x2B992DDFA232 +00011625: ZF := 0 = #12582437 +00011631: RAX := if ZF then 0x2B992DDFA233 else RAX +0001163b: mem := mem with [0x180008020, el]:u64 <- RAX +00019580: goto %0001127b + +0001127b: +00011289: RBX := mem[RSP + 0x48, el]:u64 +00011291: RAX := ~RAX +0001129b: mem := mem with [0x180008028, el]:u64 <- RAX +000112bc: RSP := RSP + 0x20 +000112e7: RBP := mem[RSP, el]:u64 +000112eb: RSP := RSP + 8 +000112f8: #12582451 := mem[RSP, el]:u64 +000112fc: RSP := RSP + 8 +000112ff: call #12582451 with noreturn + +00019582: sub sub_180001109(sub_180001109_result) +00019616: sub_180001109_result :: out u32 = low:32[RAX] + +00011645: +00011648: goto %00011646 + +00011646: +0001164d: RAX := 0x180008238 +0001165a: #12582435 := mem[RSP, el]:u64 +0001165e: RSP := RSP + 8 +00011661: call #12582435 with noreturn + +00019583: sub sub_18000110e(sub_18000110e_result) +00019617: sub_18000110e_result :: out u32 = low:32[RAX] + +00011673: +00011675: goto %00004dd1 + +00004dd1: +00004dd5: RCX := 0x180008180 +00004dda: goto %00004dd8 + +00004dd8: +00004ddf: call mem[0x18000A0F0, el]:u64 with noreturn + +00019584: sub sub_180001118(sub_180001118_result) +00019618: sub_180001118_result :: out u32 = low:32[RAX] + +0001167b: +0001167e: goto %0001167c + +0001167c: +0001169b: RSP := RSP - 0x28 +000116c3: RCX := 0 +000116e1: RSP := RSP - 8 +000116e6: mem := mem with [RSP, el]:u64 <- 0x180001C17 +000116e8: call @sub_1800010a5 with return %000116f5 + +000116f5: +00011714: RSP := RSP + 0x28 +00011737: goto %000111c1 + +000111c1: +000111c3: call @sub_1800027b0 with noreturn + +00019585: sub sub_18000111d(sub_18000111d_result) +00019619: sub_18000111d_result :: out u32 = low:32[RAX] + +000122bf: +000122c1: goto %00011a2d + +00011a2d: +00011a49: RSP := RSP - 0x28 +00011a70: RSP := RSP - 8 +00011a75: mem := mem with [RSP, el]:u64 <- 0x180001B11 +00011a77: call @sub_180001055 with return %00011a79 + +00011a79: +00011a89: #12582403 := low:8[RAX] +00011a9f: ZF := 0 = #12582403 +00011aa6: when ~ZF goto %00011aa3 +00019588: goto %00012054 + +00011aa3: +00011ab2: RSP := RSP - 8 +00011ab7: mem := mem with [RSP, el]:u64 <- 0x180001B1E +00011ab9: call @sub_1800010aa with return %00011abb + +00011abb: +00011acb: #12582401 := low:8[RAX] +00011ae1: ZF := 0 = #12582401 +00011ae8: when ~ZF goto %00011ae5 +00019587: goto %00012041 + +00011ae5: +00011af1: RAX := high:56[RAX].1 +00019586: goto %00011af3 + +00012041: +0001204a: RSP := RSP - 8 +0001204f: mem := mem with [RSP, el]:u64 <- 0x180001B27 +00012051: call @sub_180001096 with return %00012053 + +00012053: +00012056: goto %00012054 + +00012054: +00012063: RAX := 63:8[RAX].0 +00012079: goto %00011af3 + +00011af3: +00011b12: RSP := RSP + 0x28 +00011b3e: #12582396 := mem[RSP, el]:u64 +00011b42: RSP := RSP + 8 +00011b45: call #12582396 with noreturn + +00019589: sub sub_180001122(sub_180001122_result) +0001961a: sub_180001122_result :: out u32 = low:32[RAX] + +00011861: +0001186f: call @sub_1800027a0 with noreturn + +0001958a: sub sub_180001127(sub_180001127_result) +0001961b: sub_180001127_result :: out u32 = low:32[RAX] + +00011871: +00011874: goto %00011872 + +00011872: +00011891: RSP := RSP - 0x28 +000118b9: RSP := RSP - 8 +000118be: mem := mem with [RSP, el]:u64 <- 0x18000197D +000118c0: call @sub_18000100f with return %00012087 + +00012087: +000120a1: mem := mem with [RAX, el]:u64 <- mem[RAX, el]:u64 | 0x24 +000120c6: RSP := RSP - 8 +000120cb: mem := mem with [RSP, el]:u64 <- 0x180001986 +000120cd: call @sub_18000101e with return %000120cf + +000120cf: +000120e9: mem := mem with [RAX, el]:u64 <- mem[RAX, el]:u64 | 2 +00012124: RSP := RSP + 0x28 +00012150: #12582357 := mem[RSP, el]:u64 +00012154: RSP := RSP + 8 +00012157: call #12582357 with noreturn + +0001958b: sub sub_18000112c(sub_18000112c_result) +0001961c: sub_18000112c_result :: out u32 = low:32[RAX] + +0000f267: +0000f276: goto %0000f274 + +0000f274: +0000f287: mem := mem with [0x180008210, el]:u32 <- 0 +0000f2aa: #12582692 := mem[RSP, el]:u64 +0000f2ae: RSP := RSP + 8 +0000f2b1: call #12582692 with noreturn + +0001958c: sub sub_18000113b(sub_18000113b_result) +0001961d: sub_18000113b_result :: out u32 = low:32[RAX] + +0000fbf0: +0000fbf3: goto %0000fbf1 + +0000fbf1: +0000fc10: RSP := RSP - 0x28 +0000fc37: RSP := RSP - 8 +0000fc3c: mem := mem with [RSP, el]:u64 <- 0x180001AB1 +0000fc3e: call @sub_180001087 with return %0000fc40 + +0000fc40: +0000fc50: #12582610 := low:32[RAX] +0000fc66: ZF := 0 = #12582610 +0000fc6d: when ZF goto %0000fc6a +0001958f: goto %000123df + +0000fc6a: +0000fc7a: RSP := RSP - 8 +0000fc7f: mem := mem with [RSP, el]:u64 <- 0x180001AC1 +0000fc81: call @sub_1800010c3 with return %000122c3 + +000122c3: +000122c9: RCX := pad:64[low:32[RAX]] +000122d4: RSP := RSP - 8 +000122d9: mem := mem with [RSP, el]:u64 <- 0x180001AC8 +000122db: call @sub_18000276a with return %000122dd + +000122dd: +000122ed: #12582350 := low:32[RAX] +00012303: ZF := 0 = #12582350 +0001230a: when ZF goto %00012307 +0001958e: goto %000123bb + +00012307: +00012316: RSP := RSP - 8 +0001231b: mem := mem with [RSP, el]:u64 <- 0x180001AD5 +0001231d: call @sub_180002770 with return %0001231f + +000123bb: +000123c7: RAX := 63:8[RAX].0 +000123dd: goto %00012327 + +000123df: +000123e8: RSP := RSP - 8 +000123ed: mem := mem with [RSP, el]:u64 <- 0x180001ABA +000123ef: call @sub_180001145 with return %000123f1 + +000123f1: +000123f3: goto %0001231f + +0001231f: +00012325: RAX := high:56[RAX].1 +0001958d: goto %00012327 + +00012327: +00012346: RSP := RSP + 0x28 +00012372: #12582345 := mem[RSP, el]:u64 +00012376: RSP := RSP + 8 +00012379: call #12582345 with noreturn + +00019590: sub sub_180001140(sub_180001140_result) +0001961e: sub_180001140_result :: out u32 = low:32[RAX] + +0000d574: +0000d57a: goto %0000d578 + +0000d578: +0000d587: #12582870 := RBX +0000d58b: RSP := RSP - 8 +0000d591: mem := mem with [RSP, el]:u64 <- #12582870 +0000d5af: RSP := RSP - 0x20 +0000d5d5: RBX := high:56[RBX].low:8[RCX] +0000d5e1: RSP := RSP - 8 +0000d5e6: mem := mem with [RSP, el]:u64 <- 0x180001E01 +0000d5e8: call @sub_180001087 with return %0001450f + +0001450f: +00014519: RDX := 0 +0001453d: #12582194 := low:32[RAX] +00014553: ZF := 0 = #12582194 +0001455a: when ZF goto %00014557 +00019593: goto %000145f1 + +000145f1: +00014601: #12582188 := low:8[RBX] +00014617: ZF := 0 = #12582188 +0001461d: when ~ZF goto %00014557 +00019592: goto %00014621 + +00014621: +00014630: RDX := mem[0x1800081C0, el]:u64 +00014635: mem := mem with [0x1800081C0, el]:u64 <- 0 +00019591: goto %00014557 + +00014557: +0001457c: RSP := RSP + 0x20 +000145a7: RBX := mem[RSP, el]:u64 +000145ab: RSP := RSP + 8 +000145b8: #12582189 := mem[RSP, el]:u64 +000145bc: RSP := RSP + 8 +000145bf: call #12582189 with noreturn + +00019594: sub sub_180001145(sub_180001145_result) +0001961f: sub_180001145_result :: out u32 = low:32[RAX] + +000117fd: +0001180b: goto %0000e40f + +0000e40f: +0000e419: mem := mem with [RSP + 0x10, el]:u64 <- RBX +0000e425: mem := mem with [RSP + 0x18, el]:u64 <- RSI +0000e433: #12582770 := RDI +0000e437: RSP := RSP - 8 +0000e43d: mem := mem with [RSP, el]:u64 <- #12582770 +0000e45b: RSP := RSP - 0x10 +0000e4bc: RAX := pad:64[unknown[bits]:u32] +0000e4bf: RBX := pad:64[unknown[bits]:u32] +0000e4c2: RCX := pad:64[unknown[bits]:u32] +0000e4c5: RDX := pad:64[unknown[bits]:u32] +0000e4cd: R8 := pad:64[low:32[RCX]] +0000e4d9: R11 := 0 +0000e4f3: R10 := pad:64[low:32[RDX]] +0000e505: R8 := pad:64[low:32[R8] ^ 0x6C65746E] +0000e52d: R10 := pad:64[low:32[R10] ^ 0x49656E69] +0000e54b: R9 := pad:64[low:32[RBX]] +0000e553: RSI := pad:64[low:32[RAX]] +0000e55f: RCX := 0 +0000e579: RAX := 1 +0000e58d: R10 := pad:64[low:32[R10] | low:32[R8]] +0000e5ac: RAX := pad:64[unknown[bits]:u32] +0000e5af: RBX := pad:64[unknown[bits]:u32] +0000e5b2: RCX := pad:64[unknown[bits]:u32] +0000e5b5: RDX := pad:64[unknown[bits]:u32] +0000e5c7: R9 := pad:64[low:32[R9] ^ 0x756E6547] +0000e5e9: mem := mem with [RSP, el]:u32 <- low:32[RAX] +0000e5fd: R10 := pad:64[low:32[R10] | low:32[R9]] +0000e613: ZF := 0 = low:32[R10] +0000e61f: mem := mem with [RSP + 4, el]:u32 <- low:32[RBX] +0000e627: RDI := pad:64[low:32[RCX]] +0000e633: mem := mem with [RSP + 8, el]:u32 <- low:32[RCX] +0000e63f: mem := mem with [RSP + 0xC, el]:u32 <- low:32[RDX] +0000e646: when ~ZF goto %0000e643 +000195a6: goto %0000ed35 + +0000ed35: +0000ed45: mem := mem with [0x180008048, el]:u64 <- 0xFFFFFFFFFFFFFFFF +0000ed6d: RAX := pad:64[low:32[RAX] & 0xFFF3FF0] +0000ed8b: mem := mem with [0x180008040, el]:u64 <- 0x8000 +0000eda3: #12582734 := low:32[RAX] - 0x106C0 +0000edbf: ZF := 0 = #12582734 +0000edc6: when ZF goto %0000edc3 +000195a5: goto %0000ee07 + +0000ee07: +0000ee1d: #12582731 := low:32[RAX] - 0x20660 +0000ee39: ZF := 0 = #12582731 +0000ee3f: when ZF goto %0000edc3 +000195a4: goto %0000ee43 + +0000ee43: +0000ee59: #12582729 := low:32[RAX] - 0x20670 +0000ee75: ZF := 0 = #12582729 +0000ee7b: when ZF goto %0000edc3 +000195a3: goto %0000ee7f + +0000ee7f: +0000ee9e: RAX := pad:64[low:32[RAX] - 0x30650] +0000eed5: #12582724 := low:32[RAX] - 0x20 +0000eed9: CF := low:32[RAX] < 0x20 +0000eef1: ZF := 0 = #12582724 +0000eef9: when ~(CF | ZF) goto %0000e643 +000195a2: goto %0000eefd + +0000eefd: +0000ef01: RCX := 0x100010001 +0000ef11: #12582722 := low:6[RAX] +0000ef16: CF := low:1[0x100010001 >> #12582722] +0000ef2b: when ~CF goto %0000e643 +000195a1: goto %0000edc3 + +0000e643: +0000e64f: R8 := pad:64[mem[0x180008214, el]:u32] +000195a0: goto %0000e651 + +0000edc3: +0000edcf: R8 := pad:64[mem[0x180008214, el]:u32] +0000ede1: R8 := pad:64[low:32[R8] | 1] +0000ee01: mem := mem with [0x180008214, el]:u32 <- low:32[R8] +0000ee05: goto %0000e651 + +0000e651: +0000e655: RAX := 7 +0000e65d: R9 := 2 +0000e67a: #12582761 := low:32[RSI] - 7 +0000e686: OF := high:1[(low:32[RSI] ^ 7) & (low:32[RSI] ^ #12582761)] +0000e695: SF := high:1[#12582761] +0000e6a6: when (SF | OF) & ~(SF & OF) goto %0000e6a0 +0001959f: goto %0000ec75 + +0000ec75: +0000ec7f: RCX := 0 +0000ec9a: RAX := pad:64[unknown[bits]:u32] +0000ec9d: RBX := pad:64[unknown[bits]:u32] +0000eca0: RCX := pad:64[unknown[bits]:u32] +0000eca3: RDX := pad:64[unknown[bits]:u32] +0000ecaf: mem := mem with [RSP, el]:u32 <- low:32[RAX] +0000ecb7: R11 := pad:64[low:32[RBX]] +0000ecc3: mem := mem with [RSP + 4, el]:u32 <- low:32[RBX] +0000eccf: mem := mem with [RSP + 8, el]:u32 <- low:32[RCX] +0000ecdb: mem := mem with [RSP + 0xC, el]:u32 <- low:32[RDX] +0000ece8: CF := low:1[RBX >> 9] +0000ecfd: when ~CF goto %0000e6a0 +0001959e: goto %0000ed01 + +0000ed01: +0000ed13: R8 := pad:64[low:32[R8] | 2] +0000ed33: mem := mem with [0x180008214, el]:u32 <- low:32[R8] +0001959d: goto %0000e6a0 + +0000e6a0: +0000e6af: mem := mem with [0x180008038, el]:u32 <- 1 +0000e6b9: mem := mem with [0x18000803C, el]:u32 <- 2 +0000e6c6: CF := low:1[RDI >> 0x14] +0000e6dc: when ~CF goto %0000e6d9 +0001959c: goto %0000e947 + +0000e947: +0000e94f: mem := mem with [0x180008038, el]:u32 <- 2 +0000e955: RBX := 6 +0000e95f: mem := mem with [0x18000803C, el]:u32 <- 6 +0000e96c: CF := low:1[RDI >> 0x1B] +0000e981: when ~CF goto %0000e6d9 +0001959b: goto %0000e985 + +0000e985: +0000e990: CF := low:1[RDI >> 0x1C] +0000e9a5: when ~CF goto %0000e6d9 +0001959a: goto %0000e9a9 + +0000e9a9: +0000e9b3: RCX := 0 +0000e9cc: RAX := pad:64[unknown[bits]:u32] +0000e9cf: RDX := pad:64[unknown[bits]:u32] +0000e9e8: RDX := RDX << 0x20 +0000ea13: RDX := RDX | RAX +0000ea35: mem := mem with [RSP + 0x20, el]:u64 <- RDX +0000ea3f: RAX := mem[RSP + 0x20, el]:u64 +0000ea55: RAX := 63:8[RAX].low:8[RAX] & 6 +0000ea88: #12582750 := low:8[RAX] - 6 +0000eaa7: ZF := 0 = #12582750 +0000eaad: when ~ZF goto %0000e6d9 +00019599: goto %0000eab1 + +0000eab1: +0000eab7: RAX := pad:64[mem[0x18000803C, el]:u32] +0000eac9: RAX := pad:64[low:32[RAX] | 8] +0000eae7: mem := mem with [0x180008038, el]:u32 <- 3 +0000eaf1: mem := mem with [0x18000803C, el]:u32 <- low:32[RAX] +0000eb03: #12582747 := low:8[R11] & 0x20 +0000eb19: ZF := 0 = #12582747 +0000eb1f: when ZF goto %0000e6d9 +00019598: goto %0000eb23 + +0000eb23: +0000eb33: RAX := pad:64[low:32[RAX] | 0x20] +0000eb51: mem := mem with [0x180008038, el]:u32 <- 5 +0000eb5b: mem := mem with [0x18000803C, el]:u32 <- low:32[RAX] +0000eb61: RAX := 0xD0030000 +0000eb75: R11 := pad:64[low:32[R11] & 0xD0030000] +0000eba8: #12582743 := low:32[R11] - 0xD0030000 +0000ebc7: ZF := 0 = #12582743 +0000ebcd: when ~ZF goto %0000e6d9 +00019597: goto %0000ebd1 + +0000ebd1: +0000ebd9: RAX := mem[RSP + 0x20, el]:u64 +0000ebed: RAX := 63:8[RAX].low:8[RAX] & 0xE0 +0000ec1b: #12582740 := low:8[RAX] - 0xE0 +0000ec37: ZF := 0 = #12582740 +0000ec3d: when ~ZF goto %0000e6d9 +00019596: goto %0000ec41 + +0000ec41: +0000ec53: mem := + mem with [0x18000803C, el]:u32 <- mem[0x18000803C, el]:u32 | 0x40 +0000ec73: mem := mem with [0x180008038, el]:u32 <- 6 +00019595: goto %0000e6d9 + +0000e6d9: +0000e6e7: RBX := mem[RSP + 0x28, el]:u64 +0000e6f3: RAX := 0 +0000e70f: RSI := mem[RSP + 0x30, el]:u64 +0000e730: RSP := RSP + 0x10 +0000e75b: RDI := mem[RSP, el]:u64 +0000e75f: RSP := RSP + 8 +0000e76c: #12582756 := mem[RSP, el]:u64 +0000e770: RSP := RSP + 8 +0000e773: call #12582756 with noreturn + +000195a7: sub sub_18000114a(sub_18000114a_result) +00019620: sub_18000114a_result :: out u32 = low:32[RAX] + +0000f18d: +0000f19c: goto %0000f19a + +0000f19a: +0000f1a7: mem := mem with [RSP + 8, el]:u64 <- RBX +0000f1b5: #12582700 := RBP +0000f1b9: RSP := RSP - 8 +0000f1bf: mem := mem with [RSP, el]:u64 <- #12582700 +0000f1c7: RBP := RSP - 0x4C0 +0000f1e5: RSP := RSP - 0x5C0 +0000f209: RBX := pad:64[low:32[RCX]] +0000f20f: RCX := 0x17 +0000f21d: #12582696 := mem[0x18000A068, el]:u64 +0000f221: RSP := RSP - 8 +0000f226: mem := mem with [RSP, el]:u64 <- 0x180001F1A +0000f229: call #12582696 with return %0000f22b + +0000f22b: +0000f23b: #12582695 := low:32[RAX] +0000f251: ZF := 0 = #12582695 +0000f258: when ZF goto %0000f255 +000195ab: goto %00012afb + +00012afb: +00012b01: RCX := pad:64[low:32[RBX]] +00012b05: call @interrupt:#41 with noreturn + +0000f255: +0000f25f: RCX := 3 +0000f26b: RSP := RSP - 8 +0000f270: mem := mem with [RSP, el]:u64 <- 0x180001F2C +0000f272: call @sub_18000112c with return %000123f5 + +000123f5: +000123ff: RDX := 0 +00012419: RCX := RBP - 0x10 +0001241f: R8 := 0x4D0 +0001242a: RSP := RSP - 8 +0001242f: mem := mem with [RSP, el]:u64 <- 0x180001F3D +00012431: call @sub_180002752 with return %00012433 + +00012433: +00012439: RCX := RBP - 0x10 +00012447: #12582344 := mem[0x18000A030, el]:u64 +0001244b: RSP := RSP - 8 +00012450: mem := mem with [RSP, el]:u64 <- 0x180001F47 +00012453: call #12582344 with return %00012455 + +00012455: +0001245d: RBX := mem[RBP + 0xE8, el]:u64 +00012465: RDX := RBP + 0x4D8 +0001246d: RCX := RBX +00012479: R8 := 0 +00012499: #12582343 := mem[0x18000A038, el]:u64 +0001249d: RSP := RSP - 8 +000124a2: mem := mem with [RSP, el]:u64 <- 0x180001F61 +000124a5: call #12582343 with return %000124a7 + +000124a7: +000124b7: #12582342 := RAX +000124cd: ZF := 0 = #12582342 +000124d4: when ZF goto %000124d1 +000195aa: goto %00012a3b + +00012a3b: +00012a51: mem := mem with [RSP + 0x38, el]:u64 <- 0 +00012a73: RCX := RBP + 0x4E0 +00012a7d: RDX := mem[RBP + 0x4D8, el]:u64 +00012a85: R9 := RAX +00012a91: mem := mem with [RSP + 0x30, el]:u64 <- RCX +00012a99: R8 := RBX +00012aa1: RCX := RBP + 0x4E8 +00012aad: mem := mem with [RSP + 0x28, el]:u64 <- RCX +00012ab5: RCX := RBP - 0x10 +00012ac1: mem := mem with [RSP + 0x20, el]:u64 <- RCX +00012acd: RCX := 0 +00012aed: #12582313 := mem[0x18000A040, el]:u64 +00012af1: RSP := RSP - 8 +00012af6: mem := mem with [RSP, el]:u64 <- 0x180001FA2 +00012af9: call #12582313 with return %000124d1 + +000124d1: +000124df: RAX := mem[RBP + 0x4C8, el]:u64 +000124e7: RCX := RSP + 0x50 +000124f3: mem := mem with [RBP + 0xE8, el]:u64 <- RAX +000124ff: RDX := 0 +00012519: RAX := RBP + 0x4C8 +0001251f: R8 := 0x98 +00012540: RAX := RAX + 8 +0001256b: mem := mem with [RBP + 0x88, el]:u64 <- RAX +00012576: RSP := RSP - 8 +0001257b: mem := mem with [RSP, el]:u64 <- 0x180001FD4 +0001257d: call @sub_180002752 with return %0001257f + +0001257f: +00012587: RAX := mem[RBP + 0x4C8, el]:u64 +00012593: mem := mem with [RSP + 0x60, el]:u64 <- RAX +0001259d: mem := mem with [RSP + 0x50, el]:u32 <- 0x40000015 +000125a7: mem := mem with [RSP + 0x54, el]:u32 <- 1 +000125b5: #12582337 := mem[0x18000A048, el]:u64 +000125b9: RSP := RSP - 8 +000125be: mem := mem with [RSP, el]:u64 <- 0x180001FF6 +000125c1: call #12582337 with return %000125c3 + +000125c3: +000125d9: #12582336 := low:32[RAX] - 1 +000125f5: ZF := 0 = #12582336 +000125fd: RAX := RSP + 0x50 +00012609: mem := mem with [RSP + 0x40, el]:u64 <- RAX +00012611: RAX := RBP - 0x10 +0001261b: RBX := 63:8[RBX].pad:8[ZF] +00012627: mem := mem with [RSP + 0x48, el]:u64 <- RAX +00012633: RCX := 0 +00012653: #12582334 := mem[0x18000A058, el]:u64 +00012657: RSP := RSP - 8 +0001265c: mem := mem with [RSP, el]:u64 <- 0x180002017 +0001265f: call #12582334 with return %00012661 + +00012661: +00012667: RCX := RSP + 0x40 +00012675: #12582333 := mem[0x18000A050, el]:u64 +00012679: RSP := RSP - 8 +0001267e: mem := mem with [RSP, el]:u64 <- 0x180002022 +00012681: call #12582333 with return %00012683 + +00012683: +00012693: #12582332 := low:32[RAX] +000126a9: ZF := 0 = #12582332 +000126b0: when ~ZF goto %000126ad +000195a9: goto %000129f1 + +000129f1: +00012a01: #12582316 := low:8[RBX] +00012a17: ZF := 0 = #12582316 +00012a1d: when ~ZF goto %000126ad +000195a8: goto %00012a21 + +00012a21: +00012a27: RCX := pad:64[low:32[RAX + 3]] +00012a32: RSP := RSP - 8 +00012a37: mem := mem with [RSP, el]:u64 <- 0x180002032 +00012a39: call @sub_18000112c with return %000126ad + +000126ad: +000126bb: RBX := mem[RSP + 0x5D0, el]:u64 +000126dc: RSP := RSP + 0x5C0 +00012707: RBP := mem[RSP, el]:u64 +0001270b: RSP := RSP + 8 +00012718: #12582327 := mem[RSP, el]:u64 +0001271c: RSP := RSP + 8 +0001271f: call #12582327 with noreturn + +000195ac: sub sub_180001154(sub_180001154_result) +00019621: sub_180001154_result :: out u32 = low:32[RAX] + +00012b0b: +00012b0d: goto %00010ce4 + +00010ce4: +00010d00: RSP := RSP - 0x28 +00010d27: RSP := RSP - 8 +00010d2c: mem := mem with [RSP, el]:u64 <- 0x180001A69 +00010d2e: call @sub_180001087 with return %00010d30 + +00010d30: +00010d40: #12582492 := low:32[RAX] +00010d56: ZF := 0 = #12582492 +00010d5d: when ZF goto %00010d5a +000195b0: goto %00010e1c + +00010e1c: +00010e24: RAX := mem[GS_BASE + 0x30, el]:u64 +00010e2e: RCX := mem[RAX + 8, el]:u64 +00010e33: goto %00010e31 + +00010e31: +00010e3e: RAX := 0 +00010e75: call @intrinsic:x86:lock with return %00010e78 + +00010e78: +00010e79: #12582486 := mem[0x1800081C0, el]:u64 +00010e7e: #12582485 := -#12582486 +00010e9d: ZF := 0 = #12582485 +00010eb1: goto %00010ea9 + +00010ea9: +00010eab: when 0 = #12582486 goto %00010ea3 +00010eac: goto %00010ea7 + +00010ea7: +00010ea8: RAX := #12582486 +00010eae: goto %00010eaa + +00010ea3: +00010ea4: mem := mem with [0x1800081C0, el]:u64 <- RCX +00010ead: goto %00010eaa + +00010eaa: +00010eb0: call @intrinsic:x86:unlock with return %00010ebb + +00010ebb: +00010ec0: when ~ZF goto %00010ebd +000195af: goto %00010d5a + +00010d5a: +00010d6c: RAX := 63:8[RAX].0 +00010d72: ZF := 1 +000195ae: goto %00010d80 + +00010ebd: +00010ede: #12582483 := RCX - RAX +00010efd: ZF := 0 = #12582483 +00010f03: when ZF goto %00010dd4 +000195ad: goto %00010e31 + +00010dd4: +00010dda: RAX := high:56[RAX].1 +00010dde: goto %00010d80 + +00010d80: +00010d9f: RSP := RSP + 0x28 +00010dcb: #12582487 := mem[RSP, el]:u64 +00010dcf: RSP := RSP + 8 +00010dd2: call #12582487 with noreturn + +000195b1: sub sub_180001163(sub_180001163_result) +00019622: sub_180001163_result :: out u32 = low:32[RAX] + +00012b17: +00012b19: goto %00011c59 + +00011c59: +00011c63: mem := mem with [RSP + 8, el]:u64 <- RBX +00011c6f: mem := mem with [RSP + 0x10, el]:u64 <- RBP +00011c7b: mem := mem with [RSP + 0x18, el]:u64 <- RSI +00011c89: #12582388 := RDI +00011c8d: RSP := RSP - 8 +00011c93: mem := mem with [RSP, el]:u64 <- #12582388 +00011cb1: RSP := RSP - 0x20 +00011cd5: RDI := R9 +00011cdd: RSI := R8 +00011ce5: RBX := pad:64[low:32[RDX]] +00011ced: RBP := RCX +00011cf8: RSP := RSP - 8 +00011cfd: mem := mem with [RSP, el]:u64 <- 0x180001B7C +00011cff: call @sub_180001087 with return %00011d01 + +00011d01: +00011d11: #12582384 := low:32[RAX] +00011d27: ZF := 0 = #12582384 +00011d2e: when ~ZF goto %00011d2b +000195b3: goto %00011fb5 + +00011fb5: +00011fcb: #12582365 := low:32[RBX] - 1 +00011fe7: ZF := 0 = #12582365 +00011fed: when ~ZF goto %00011d2b +000195b2: goto %00011ff1 + +00011ff1: +00011ff7: R8 := RSI +00012003: RDX := 0 +0001201d: RCX := RBP +00012025: RAX := RDI +00012033: #12582363 := mem[0x18000B020, el]:u64 +00012037: RSP := RSP - 8 +0001203c: mem := mem with [RSP, el]:u64 <- 0x180001B96 +0001203f: call #12582363 with return %00011d2b + +00011d2b: +00011d39: RDX := mem[RSP + 0x58, el]:u64 +00011d43: RCX := pad:64[mem[RSP + 0x50, el]:u32] +00011d4d: RBX := mem[RSP + 0x30, el]:u64 +00011d57: RBP := mem[RSP + 0x38, el]:u64 +00011d61: RSI := mem[RSP + 0x40, el]:u64 +00011d82: RSP := RSP + 0x20 +00011dad: RDI := mem[RSP, el]:u64 +00011db1: RSP := RSP + 8 +00011db5: goto %00004dff + +00004dff: +00004e03: call mem[0x18000A180, el]:u64 with noreturn + +000195b4: sub sub_180001168(sub_180001168_result) +00019623: sub_180001168_result :: out u32 = low:32[RAX] + +00012b1b: +00012b1d: goto %00011759 + +00011759: +00011765: #12582428 := RBX +00011769: RSP := RSP - 8 +0001176f: mem := mem with [RSP, el]:u64 <- #12582428 +0001178d: RSP := RSP - 0x20 +000117b1: RAX := pad:64[mem[0x1800081C8]] +000117c3: #12582424 := low:32[RCX] +000117d9: ZF := 0 = #12582424 +000117df: RBX := 1 +000117eb: RAX := pad:64[if ZF then 1 else low:32[RAX]] +000117f5: mem := mem with [0x1800081C8] <- low:8[RAX] +00011801: RSP := RSP - 8 +00011806: mem := mem with [RSP, el]:u64 <- 0x180001C4A +00011808: call @sub_180001145 with return %0001180d + +0001180d: +00011817: RSP := RSP - 8 +0001181c: mem := mem with [RSP, el]:u64 <- 0x180001C4F +0001181e: call @sub_18000102d with return %0001182b + +0001182b: +0001183b: #12582422 := low:8[RAX] +00011851: ZF := 0 = #12582422 +00011858: when ~ZF goto %00011855 +000195b7: goto %00012298 + +00011855: +00011865: RSP := RSP - 8 +0001186a: mem := mem with [RSP, el]:u64 <- 0x180001C5C +0001186c: call @sub_180001122 with return %0001217d + +0001217d: +0001218d: #12582356 := low:8[RAX] +000121a3: ZF := 0 = #12582356 +000121aa: when ~ZF goto %000121a7 +000195b6: goto %00012267 + +000121a7: +000121b5: RAX := high:56[RAX].1 +000195b5: goto %000121b7 + +00012267: +00012271: RCX := 0 +0001228e: RSP := RSP - 8 +00012293: mem := mem with [RSP, el]:u64 <- 0x180001C67 +00012295: call @sub_180001046 with return %00012297 + +00012297: +0001229a: goto %00012298 + +00012298: +000122a7: RAX := 63:8[RAX].0 +000122bd: goto %000121b7 + +000121b7: +000121d6: RSP := RSP + 0x20 +00012201: RBX := mem[RSP, el]:u64 +00012205: RSP := RSP + 8 +00012212: #12582351 := mem[RSP, el]:u64 +00012216: RSP := RSP + 8 +00012219: call #12582351 with noreturn + +000195b8: sub sub_180001177(sub_180001177_result) +00019624: sub_180001177_result :: out u32 = low:32[RAX] + +00012b27: +00012b29: goto %00011b77 + +00011b77: +00011b93: RSP := RSP - 0x28 +00011bba: RSP := RSP - 8 +00011bbf: mem := mem with [RSP, el]:u64 <- 0x180001B45 +00011bc1: call @sub_1800010e1 with return %00011bc3 + +00011bc3: +00011bcd: RSP := RSP - 8 +00011bd2: mem := mem with [RSP, el]:u64 <- 0x180001B4A +00011bd4: call @sub_180001096 with return %00011be1 + +00011be1: +00011be7: RAX := high:56[RAX].1 +00011c08: RSP := RSP + 0x28 +00011c34: #12582389 := mem[RSP, el]:u64 +00011c38: RSP := RSP + 8 +00011c3b: call #12582389 with noreturn + +000195b9: sub sub_180001181(sub_180001181_result) +00019625: sub_180001181_result :: out u32 = low:32[RAX] + +00012e13: +00012e21: goto %00011e17 + +00011e17: +00011e33: RSP := RSP - 0x28 +00011e5a: RSP := RSP - 8 +00011e5f: mem := mem with [RSP, el]:u64 <- 0x180001BD9 +00011e61: call @sub_180001087 with return %00011e63 + +00011e63: +00011e73: #12582376 := low:32[RAX] +00011e89: ZF := 0 = #12582376 +00011e90: when ZF goto %00011e8d +000195bb: goto %00011f6b + +00011e8d: +00011e9c: RSP := RSP - 8 +00011ea1: mem := mem with [RSP, el]:u64 <- 0x180001BF2 +00011ea3: call @sub_180001032 with return %00011ea5 + +00011ea5: +00011eb5: #12582374 := low:32[RAX] +00011ecb: ZF := 0 = #12582374 +00011ed2: when ~ZF goto %00011ecf +000195ba: goto %00011f59 + +00011f59: +00011f62: RSP := RSP - 8 +00011f67: mem := mem with [RSP, el]:u64 <- 0x180001BFB +00011f69: call @sub_180002794 with return %00011ecf + +00011ecf: +00011ef4: RSP := RSP + 0x28 +00011f20: #12582369 := mem[RSP, el]:u64 +00011f24: RSP := RSP + 8 +00011f27: call #12582369 with noreturn + +00011f6b: +00011f6f: RCX := 0x1800081D0 +00011f90: RSP := RSP + 0x28 +00011fb3: goto %00004e1d + +00004e1d: +00004e21: call mem[0x18000A1A8, el]:u64 with noreturn + +000195bc: sub sub_180001350(sub_180001350_result) +00019626: sub_180001350_result :: out u32 = low:32[RAX] + +00012b30: +00012b4f: RSP := RSP - 0x28 +00012b7d: #12582309 := low:32[RDX] +00012b93: ZF := 0 = #12582309 +00012b9a: when ZF goto %00012b97 +000195cb: goto %00013f4f + +00012b97: +00012bad: #12582307 := R8 +00012bc3: ZF := 0 = #12582307 +00012bcd: RCX := 63:8[RCX].pad:8[~ZF] +00012bee: RSP := RSP + 0x28 +00012c12: call @sub_180001510 with noreturn + +00013f4f: +00013f6b: RDX := pad:64[low:32[RDX] - 1] +00013f87: ZF := 0 = low:32[RDX] +00013f8e: when ZF goto %00013f8b +000195ca: goto %00013fdd + +00013f8b: +00013f97: RDX := R8 +00013fb8: RSP := RSP + 0x28 +00013fdb: goto %00013955 + +00013955: +0001395f: mem := mem with [RSP + 8, el]:u64 <- RBX +0001396b: mem := mem with [RSP + 0x10, el]:u64 <- RSI +00013977: mem := mem with [RSP + 0x20, el]:u64 <- RDI +00013985: #12582264 := R14 +00013989: RSP := RSP - 8 +0001398f: mem := mem with [RSP, el]:u64 <- #12582264 +000139ad: RSP := RSP - 0x20 +000139d1: RSI := RDX +000139d9: R14 := RCX +000139e5: RCX := 0 +00013a02: RSP := RSP - 8 +00013a07: mem := mem with [RSP, el]:u64 <- 0x1800013D6 +00013a09: call @sub_180001168 with return %00013a0b + +00013a0b: +00013a1b: #12582260 := low:8[RAX] +00013a31: ZF := 0 = #12582260 +00013a38: when ZF goto %00013a35 +000195c9: goto %00013c11 + +00013c11: +00013c1a: RSP := RSP - 8 +00013c1f: mem := mem with [RSP, el]:u64 <- 0x1800013E3 +00013c21: call @sub_180001154 with return %00013c23 + +00013c23: +00013c2b: RBX := high:56[RBX].low:8[RAX] +00013c37: mem := mem with [RSP + 0x40] <- low:8[RAX] +00013c3f: RDI := high:56[RDI].1 +00013c57: #12582254 := mem[0x1800081B8, el]:u32 +00013c73: ZF := 0 = #12582254 +00013c79: when ~ZF goto %00013adb +000195c8: goto %00013c7d + +00013adb: +00013adf: RCX := 7 +00013aea: RSP := RSP - 8 +00013aef: mem := mem with [RSP, el]:u64 <- 0x1800014C8 +00013af1: call @sub_18000114a with return %00013af3 + +00013af3: +00013af7: call @interrupt:#3 with noreturn + +00013af9: +00013afb: call @interrupt:#3 with noreturn + +00013afd: +00013aff: call @interrupt:#3 with noreturn + +00013b01: +00013b03: call @interrupt:#3 with noreturn + +00013b05: +00013b07: call @interrupt:#3 with noreturn + +00013b09: +00013b0b: call @interrupt:#3 with noreturn + +00013b0d: +00013b0f: call @interrupt:#3 with noreturn + +00013b11: +00013b13: call @interrupt:#3 with noreturn + +00013b15: +00013b17: call @interrupt:#3 with noreturn + +00013b19: +00013b1b: call @interrupt:#3 with noreturn + +00013b1d: +00013b1f: call @interrupt:#3 with noreturn + +00013b21: +00013b23: call @interrupt:#3 with noreturn + +00013b25: +00013b27: call @interrupt:#3 with noreturn + +00013b29: +00013b2b: call @interrupt:#3 with noreturn + +00013b2d: +00013b2f: call @interrupt:#3 with noreturn + +00013b31: +00013b33: call @interrupt:#3 with noreturn + +00013b35: +00013b37: call @interrupt:#3 with noreturn + +00013b39: +00013b3b: call @interrupt:#3 with noreturn + +00013b3d: +00013b3f: call @interrupt:#3 with noreturn + +00013b41: +00013b43: call @interrupt:#3 with noreturn + +00013b45: +00013b47: call @interrupt:#3 with noreturn + +00013b49: +00013b4b: call @interrupt:#3 with noreturn + +00013b4d: +00013b4f: call @interrupt:#3 with noreturn + +00013b51: +00013b53: call @interrupt:#3 with noreturn + +00013b55: +00013b57: call @interrupt:#3 with noreturn + +00013b59: +00013b5b: call @interrupt:#3 with noreturn + +00013b5d: +00013b5f: call @interrupt:#3 with noreturn + +00013b61: +00013b63: call @interrupt:#3 with noreturn + +00013b65: +00013b67: call @interrupt:#3 with noreturn + +00013b69: +00013b6b: call @interrupt:#3 with noreturn + +00013b6d: +00013b6f: call @interrupt:#3 with noreturn + +00013b71: +00013b73: call @interrupt:#3 with noreturn + +00013b75: +00013b77: call @interrupt:#3 with noreturn + +00013b79: +00013b7b: call @interrupt:#3 with noreturn + +00013b7d: +00013b7f: call @interrupt:#3 with noreturn + +00013b81: +00013b83: call @interrupt:#3 with noreturn + +00013b85: +00013b87: call @interrupt:#3 with noreturn + +00013b89: +00013b8b: call @interrupt:#3 with noreturn + +00013b8d: +00013b8f: call @interrupt:#3 with noreturn + +00013b91: +00013b93: call @interrupt:#3 with noreturn + +00013b95: +00013b97: call @interrupt:#3 with noreturn + +00013b99: +00013b9b: call @interrupt:#3 with noreturn + +00013b9d: +00013b9f: call @interrupt:#3 with noreturn + +00013ba1: +00013ba3: call @interrupt:#3 with noreturn + +00013ba5: +00013ba7: call @interrupt:#3 with noreturn + +00013ba9: +00013bab: call @interrupt:#3 with noreturn + +00013bad: +00013baf: call @interrupt:#3 with noreturn + +00013bb1: +00013bb3: call @interrupt:#3 with noreturn + +00013bb5: +00013bb7: call @interrupt:#3 with noreturn + +00013bb9: +00013bbb: call @interrupt:#3 with noreturn + +00013bbd: +00013bbf: call @interrupt:#3 with noreturn + +00013bc1: +00013bc3: call @interrupt:#3 with noreturn + +00013bc5: +00013bc7: call @interrupt:#3 with noreturn + +00013bc9: +00013bcb: call @interrupt:#3 with noreturn + +00013bcd: +00013bcf: call @interrupt:#3 with noreturn + +00013bd1: +00013bd3: call @interrupt:#3 with noreturn + +00013bd5: +00013bd7: call @interrupt:#3 with noreturn + +00013bd9: +00013bdb: call @interrupt:#3 with noreturn + +00013bdd: +00013bdf: call @interrupt:#3 with noreturn + +00013be1: +00013be3: call @interrupt:#3 with noreturn + +00013be5: +00013be7: call @interrupt:#3 with noreturn + +00013be9: +00013beb: call @interrupt:#3 with noreturn + +00013bed: +00013bef: call @interrupt:#3 with noreturn + +00013bf1: +00013bf3: call @interrupt:#3 with noreturn + +00013bf5: +00013bf7: call @interrupt:#3 with noreturn + +00013bf9: +00013bfb: call @interrupt:#3 with noreturn + +00013bfd: +00013bff: call @interrupt:#3 with noreturn + +00013c01: +00013c03: call @interrupt:#3 with noreturn + +00013c05: +00013c07: call @interrupt:#3 with noreturn + +00013c09: +00013c0b: call @interrupt:#3 with noreturn + +00013c0d: +00013c0f: call @interrupt:#3 with noreturn + +00013c7d: +00013c83: mem := mem with [0x1800081B8, el]:u32 <- 1 +00013c8e: RSP := RSP - 8 +00013c93: mem := mem with [RSP, el]:u64 <- 0x180001408 +00013c95: call @sub_180001019 with return %00013c97 + +00013c97: +00013ca7: #12582252 := low:8[RAX] +00013cbd: ZF := 0 = #12582252 +00013cc4: when ZF goto %00013cc1 +000195c6: goto %00013e43 + +00013e43: +00013e4c: RSP := RSP - 8 +00013e51: mem := mem with [RSP, el]:u64 <- 0x180001411 +00013e53: call @sub_1800010cd with return %00013e55 + +00013e55: +00013e5e: RSP := RSP - 8 +00013e63: mem := mem with [RSP, el]:u64 <- 0x180001416 +00013e65: call @sub_180001041 with return %00013e67 + +00013e67: +00013e70: RSP := RSP - 8 +00013e75: mem := mem with [RSP, el]:u64 <- 0x18000141B +00013e77: call @sub_180001127 with return %00013e79 + +00013e79: +00013e7d: RDX := 0x180006330 +00013e83: RCX := 0x180006220 +00013e8e: RSP := RSP - 8 +00013e93: mem := mem with [RSP, el]:u64 <- 0x18000142E +00013e95: call @sub_18000275e with return %00013e97 + +00013e97: +00013ea7: #12582241 := low:32[RAX] +00013ebd: ZF := 0 = #12582241 +00013ec3: when ~ZF goto %00013cc1 +000195c5: goto %00013ec7 + +00013ec7: +00013ed0: RSP := RSP - 8 +00013ed5: mem := mem with [RSP, el]:u64 <- 0x180001437 +00013ed7: call @sub_18000113b with return %00013ed9 + +00013ed9: +00013ee9: #12582239 := low:8[RAX] +00013eff: ZF := 0 = #12582239 +00013f05: when ZF goto %00013cc1 +000195c4: goto %00013f09 + +00013f09: +00013f0d: RDX := 0x180006110 +00013f13: RCX := 0x180006000 +00013f1e: RSP := RSP - 8 +00013f23: mem := mem with [RSP, el]:u64 <- 0x18000144E +00013f25: call @sub_180002758 with return %00013f27 + +00013f27: +00013f2d: mem := mem with [0x1800081B8, el]:u32 <- 2 +00013f3b: RDI := 63:8[RDI].0 +000195c3: goto %00013cc1 + +00013cc1: +00013ccf: RCX := high:56[RCX].low:8[RBX] +00013cda: RSP := RSP - 8 +00013cdf: mem := mem with [RSP, el]:u64 <- 0x180001462 +00013ce1: call @sub_180001140 with return %00013ce3 + +00013ce3: +00013cf3: #12582250 := low:8[RDI] +00013d09: ZF := 0 = #12582250 +00013d0f: when ~ZF goto %00013a35 +000195c2: goto %00013d13 + +00013a35: +00013a45: RAX := 0 +000195c1: goto %00013a59 + +00013d13: +00013d1c: RSP := RSP - 8 +00013d21: mem := mem with [RSP, el]:u64 <- 0x18000146C +00013d23: call @sub_180001109 with return %00013d25 + +00013d25: +00013d2b: RBX := RAX +00013d49: #12582248 := mem[RAX, el]:u64 +00013d69: ZF := 0 = #12582248 +00013d70: when ZF goto %00013d6d +000195c0: goto %00013db7 + +00013db7: +00013dbd: RCX := RAX +00013dc8: RSP := RSP - 8 +00013dcd: mem := mem with [RSP, el]:u64 <- 0x18000147D +00013dcf: call @sub_18000108c with return %00013dd1 + +00013dd1: +00013de1: #12582244 := low:8[RAX] +00013df7: ZF := 0 = #12582244 +00013dfd: when ZF goto %00013d6d +000195bf: goto %00013e01 + +00013e01: +00013e07: R8 := RSI +00013e0d: RDX := 2 +00013e15: RCX := R14 +00013e1f: RAX := mem[RBX, el]:u64 +00013e27: R9 := mem[0x18000B020, el]:u64 +00013e35: #12582242 := R9 +00013e39: RSP := RSP - 8 +00013e3e: mem := mem with [RSP, el]:u64 <- 0x180001499 +00013e41: call #12582242 with return %00013d6d + +00013d6d: +00013d91: mem := + mem with [0x180008170, el]:u32 <- mem[0x180008170, el]:u32 + 1 +00013db1: RAX := 1 +00013db5: goto %00013a59 + +00013a59: +00013a61: RBX := mem[RSP + 0x30, el]:u64 +00013a6b: RSI := mem[RSP + 0x38, el]:u64 +00013a75: RDI := mem[RSP + 0x48, el]:u64 +00013a96: RSP := RSP + 0x20 +00013ac1: R14 := mem[RSP, el]:u64 +00013ac5: RSP := RSP + 8 +00013ad2: #12582255 := mem[RSP, el]:u64 +00013ad6: RSP := RSP + 8 +00013ad9: call #12582255 with noreturn + +00013fdd: +00013ff9: RDX := pad:64[low:32[RDX] - 1] +00014015: ZF := 0 = low:32[RDX] +0001401c: when ZF goto %00014019 +000195be: goto %0001408d + +00014019: +00014028: RSP := RSP - 8 +0001402d: mem := mem with [RSP, el]:u64 <- 0x18000137D +0001402f: call @sub_18000111d with return %00014031 + +0001408d: +000140a3: #12582224 := low:32[RDX] - 1 +000140bf: ZF := 0 = #12582224 +000140c6: when ZF goto %000140c3 +000195bd: goto %000140df + +000140c3: +000140d2: RSP := RSP - 8 +000140d7: mem := mem with [RSP, el]:u64 <- 0x180001376 +000140d9: call @sub_180001177 with return %000140db + +000140db: +000140dd: goto %00014031 + +00014031: +00014037: RAX := pad:64[low:8[RAX]] +00014058: RSP := RSP + 0x28 +00014084: #12582225 := mem[RSP, el]:u64 +00014088: RSP := RSP + 8 +0001408b: call #12582225 with noreturn + +000140df: +000140e3: RAX := 1 +00014104: RSP := RSP + 0x28 +00014130: #12582219 := mem[RSP, el]:u64 +00014134: RSP := RSP + 8 +00014137: call #12582219 with noreturn + +000195cc: sub sub_180001510(sub_180001510_result) +00019627: sub_180001510_result :: out u32 = low:32[RAX] + +00012c10: +00012c1d: mem := mem with [RSP + 8, el]:u64 <- RBX +00012c2b: #12582302 := RDI +00012c2f: RSP := RSP - 8 +00012c35: mem := mem with [RSP, el]:u64 <- #12582302 +00012c53: RSP := RSP - 0x30 +00012c79: RDI := high:56[RDI].low:8[RCX] +00012c81: RAX := pad:64[mem[0x180008170, el]:u32] +00012c93: #12582298 := low:32[RAX] +00012ca5: SF := high:1[#12582298] +00012ca9: ZF := 0 = #12582298 +00012cb8: when ~(ZF | SF) goto %00012cb1 +000195d0: goto %000138e7 + +00012cb1: +00012cd5: RAX := pad:64[low:32[RAX] - 1] +00012cf7: mem := mem with [0x180008170, el]:u32 <- low:32[RAX] +00012d02: RSP := RSP - 8 +00012d07: mem := mem with [RSP, el]:u64 <- 0x180001541 +00012d09: call @sub_180001154 with return %00012d0b + +00012d0b: +00012d13: RBX := high:56[RBX].low:8[RAX] +00012d1f: mem := mem with [RSP + 0x20] <- low:8[RAX] +00012d37: #12582294 := mem[0x1800081B8, el]:u32 - 2 +00012d53: ZF := 0 = #12582294 +00012d5a: when ~ZF goto %00012d57 +000195cf: goto %00012e0d + +00012d57: +00012d61: RCX := 7 +00012d6c: RSP := RSP - 8 +00012d71: mem := mem with [RSP, el]:u64 <- 0x180001591 +00012d73: call @sub_18000114a with return %00012d75 + +00012d75: +00012d7b: call @interrupt:#3 with noreturn + +00012d7d: +00012d7f: call @interrupt:#3 with noreturn + +00012d81: +00012d83: call @interrupt:#3 with noreturn + +00012d85: +00012d87: call @interrupt:#3 with noreturn + +00012d89: +00012d8b: call @interrupt:#3 with noreturn + +00012d8d: +00012d8f: call @interrupt:#3 with noreturn + +00012d91: +00012d93: call @interrupt:#3 with noreturn + +00012d95: +00012d97: call @interrupt:#3 with noreturn + +00012d99: +00012d9b: call @interrupt:#3 with noreturn + +00012d9d: +00012d9f: call @interrupt:#3 with noreturn + +00012da1: +00012da3: call @interrupt:#3 with noreturn + +00012da5: +00012da7: call @interrupt:#3 with noreturn + +00012da9: +00012dab: call @interrupt:#3 with noreturn + +00012dad: +00012daf: call @interrupt:#3 with noreturn + +00012db1: +00012db3: call @interrupt:#3 with noreturn + +00012db5: +00012db7: call @interrupt:#3 with noreturn + +00012db9: +00012dbb: call @interrupt:#3 with noreturn + +00012dbd: +00012dbf: call @interrupt:#3 with noreturn + +00012dc1: +00012dc3: call @interrupt:#3 with noreturn + +00012dc5: +00012dc7: call @interrupt:#3 with noreturn + +00012dc9: +00012dcb: call @interrupt:#3 with noreturn + +00012dcd: +00012dcf: call @interrupt:#3 with noreturn + +00012dd1: +00012dd3: call @interrupt:#3 with noreturn + +00012dd5: +00012dd7: call @interrupt:#3 with noreturn + +00012dd9: +00012ddb: call @interrupt:#3 with noreturn + +00012ddd: +00012ddf: call @interrupt:#3 with noreturn + +00012de1: +00012de3: call @interrupt:#3 with noreturn + +00012de5: +00012de7: call @interrupt:#3 with noreturn + +00012de9: +00012deb: call @interrupt:#3 with noreturn + +00012ded: +00012def: call @interrupt:#3 with noreturn + +00012df1: +00012df3: call @interrupt:#3 with noreturn + +00012df5: +00012df7: call @interrupt:#3 with noreturn + +00012df9: +00012dfb: call @interrupt:#3 with noreturn + +00012dfd: +00012dff: call @interrupt:#3 with noreturn + +00012e01: +00012e03: call @interrupt:#3 with noreturn + +00012e05: +00012e07: call @interrupt:#3 with noreturn + +00012e09: +00012e0b: call @interrupt:#3 with noreturn + +00012e0d: +00012e17: RSP := RSP - 8 +00012e1c: mem := mem with [RSP, el]:u64 <- 0x180001555 +00012e1e: call @sub_180001181 with return %00013575 + +00013575: +0001357e: RSP := RSP - 8 +00013583: mem := mem with [RSP, el]:u64 <- 0x18000155A +00013585: call @sub_18000110e with return %00013587 + +00013587: +00013590: RSP := RSP - 8 +00013595: mem := mem with [RSP, el]:u64 <- 0x18000155F +00013597: call @sub_1800010d7 with return %00013599 + +00013599: +000135a9: mem := mem with [0x1800081B8, el]:u32 <- 0 +000135c9: RCX := high:56[RCX].low:8[RBX] +000135d4: RSP := RSP - 8 +000135d9: mem := mem with [RSP, el]:u64 <- 0x18000156D +000135db: call @sub_180001140 with return %000135dd + +000135dd: +000135e7: RDX := 0 +00013603: RCX := high:56[RCX].low:8[RDI] +0001360f: RSP := RSP - 8 +00013614: mem := mem with [RSP, el]:u64 <- 0x180001577 +00013616: call @sub_180001082 with return %000137a9 + +000137a9: +000137c0: #12582274 := low:8[RAX] +000137c5: RAX := 63:8[RAX].-low:8[RAX] +000137c9: CF := #12582274 <> 0 +00013804: #12582272 := low:32[RBX] +00013808: #12582271 := low:32[RBX] +0001380e: RBX := pad:64[#12582271 - #12582272 + pad:32[CF]] +00013843: RBX := pad:64[low:32[RBX] & 1] +00013864: RSP := RSP - 8 +00013869: mem := mem with [RSP, el]:u64 <- 0x180001583 +0001386b: call @sub_180001118 with return %0001386d + +0001386d: +00013873: RAX := pad:64[low:32[RBX]] +00013878: goto %00013876 + +000138e7: +000138f1: RAX := 0 +000195cd: goto %00013876 + +00013876: +00013881: RBX := mem[RSP + 0x40, el]:u64 +000138a2: RSP := RSP + 0x30 +000138cd: RDI := mem[RSP, el]:u64 +000138d1: RSP := RSP + 8 +000138de: #12582265 := mem[RSP, el]:u64 +000138e2: RSP := RSP + 8 +000138e5: call #12582265 with noreturn + +000195d1: sub sub_1800015b8(sub_1800015b8_result) +00019628: sub_1800015b8_result :: out u32 = low:32[RAX] + +00004b3f: +00004b48: RAX := RSP +00004b54: mem := mem with [RAX + 0x20, el]:u64 <- RBX +00004b60: mem := mem with [RAX + 0x18, el]:u64 <- R8 +00004b6c: mem := mem with [RAX + 0x10, el]:u32 <- low:32[RDX] +00004b78: mem := mem with [RAX + 8, el]:u64 <- RCX +00004b86: #12582902 := RSI +00004b8a: RSP := RSP - 8 +00004b90: mem := mem with [RSP, el]:u64 <- #12582902 +00004b9e: #12582901 := RDI +00004ba2: RSP := RSP - 8 +00004ba8: mem := mem with [RSP, el]:u64 <- #12582901 +00004bb6: #12582900 := R14 +00004bba: RSP := RSP - 8 +00004bc0: mem := mem with [RSP, el]:u64 <- #12582900 +00004bde: RSP := RSP - 0x40 +00004c02: RSI := R8 +00004c0a: RDI := pad:64[low:32[RDX]] +00004c12: R14 := RCX +00004c24: #12582896 := low:32[RDX] +00004c3a: ZF := 0 = #12582896 +00004c41: when ~ZF goto %00004c3e +000195e0: goto %0001912d + +0001912d: +00019148: #12582123 := mem[0x180008170, el]:u32 - low:32[RDX] +00019154: OF := high:1[(mem[0x180008170, el]:u32 ^ low:32[RDX]) & + (mem[0x180008170, el]:u32 ^ #12582123)] +00019163: SF := high:1[#12582123] +00019167: ZF := 0 = #12582123 +00019175: when ~(ZF | (SF | OF) & ~(SF & OF)) goto %00004c3e +000195df: goto %00019179 + +00004c3e: +00004c4a: RAX := pad:64[low:32[RDX - 1]] +00004c62: #12582894 := low:32[RAX] - 1 +00004c66: CF := low:32[RAX] < 1 +00004c7e: ZF := 0 = #12582894 +00004c87: when ~(CF | ZF) goto %00004c83 +000195de: goto %0001901b + +0001901b: +00019021: RAX := mem[0x180006880, el]:u64 +00019033: #12582130 := RAX +00019049: ZF := 0 = #12582130 +00019050: when ~ZF goto %0001904d +000195dd: goto %0001911f + +0001904d: +0001905f: #12582128 := mem[0x18000B020, el]:u64 +00019063: RSP := RSP - 8 +00019068: mem := mem with [RSP, el]:u64 <- 0x180001611 +0001906b: call #12582128 with return %0001906d + +0001906d: +00019073: RBX := pad:64[low:32[RAX]] +0001907f: mem := mem with [RSP + 0x30, el]:u32 <- low:32[RAX] +00019091: #12582127 := low:32[RAX] +000190a7: ZF := 0 = #12582127 +000190ad: when ZF goto %00018b9b +000195dc: goto %000190b1 + +0001911f: +00019127: mem := mem with [RSP + 0x30, el]:u32 <- 1 +0001912b: goto %000190b1 + +000190b1: +000190b7: R8 := RSI +000190bf: RDX := pad:64[low:32[RDI]] +000190c7: RCX := R14 +000190d2: RSP := RSP - 8 +000190d7: mem := mem with [RSP, el]:u64 <- 0x18000162C +000190d9: call @sub_180001350 with return %000190db + +000190db: +000190e1: RBX := pad:64[low:32[RAX]] +000190ed: mem := mem with [RSP + 0x30, el]:u32 <- low:32[RAX] +000190ff: #12582125 := low:32[RAX] +00019115: ZF := 0 = #12582125 +0001911b: when ZF goto %00018b9b +000195db: goto %00004c83 + +00004c83: +00004c90: R8 := RSI +00004c98: RDX := pad:64[low:32[RDI]] +00004ca0: RCX := R14 +00004cac: RSP := RSP - 8 +00004cb1: mem := mem with [RSP, el]:u64 <- 0x180001647 +00004cb3: call @sub_1800010b4 with return %00018ab3 + +00018ab3: +00018ab9: RBX := pad:64[low:32[RAX]] +00018ac5: mem := mem with [RSP + 0x30, el]:u32 <- low:32[RAX] +00018add: #12582155 := low:32[RDI] - 1 +00018af9: ZF := 0 = #12582155 +00018b00: when ~ZF goto %00018afd +000195da: goto %00018ee7 + +00018ee7: +00018ef7: #12582137 := low:32[RAX] +00018f0d: ZF := 0 = #12582137 +00018f13: when ~ZF goto %00018afd +000195d9: goto %00018f17 + +00018f17: +00018f1d: R8 := RSI +00018f29: RDX := 0 +00018f43: RCX := R14 +00018f4e: RSP := RSP - 8 +00018f53: mem := mem with [RSP, el]:u64 <- 0x180001663 +00018f55: call @sub_1800010b4 with return %00018f57 + +00018f57: +00018f67: #12582135 := RSI +00018f7d: ZF := 0 = #12582135 +00018f87: RCX := 63:8[RCX].pad:8[~ZF] +00018f92: RSP := RSP - 8 +00018f97: mem := mem with [RSP, el]:u64 <- 0x18000166E +00018f99: call @sub_180001510 with return %00018f9b + +00018f9b: +00018fa1: RAX := mem[0x180006880, el]:u64 +00018fb3: #12582133 := RAX +00018fc9: ZF := 0 = #12582133 +00018fcf: when ZF goto %00018afd +000195d8: goto %00018fd3 + +00018fd3: +00018fd9: R8 := RSI +00018fe5: RDX := 0 +00018fff: RCX := R14 +0001900d: #12582131 := mem[0x18000B020, el]:u64 +00019011: RSP := RSP - 8 +00019016: mem := mem with [RSP, el]:u64 <- 0x180001688 +00019019: call #12582131 with return %00018afd + +00018afd: +00018b13: #12582153 := low:32[RDI] +00018b29: ZF := 0 = #12582153 +00018b30: when ZF goto %00018b2d +000195d7: goto %00018eab + +00018eab: +00018ec1: #12582139 := low:32[RDI] - 3 +00018edd: ZF := 0 = #12582139 +00018ee3: when ~ZF goto %00018b9b +000195d6: goto %00018b2d + +00018b2d: +00018b39: R8 := RSI +00018b41: RDX := pad:64[low:32[RDI]] +00018b49: RCX := R14 +00018b54: RSP := RSP - 8 +00018b59: mem := mem with [RSP, el]:u64 <- 0x18000169E +00018b5b: call @sub_180001350 with return %00018b5d + +00018b5d: +00018b63: RBX := pad:64[low:32[RAX]] +00018b6f: mem := mem with [RSP + 0x30, el]:u32 <- low:32[RAX] +00018b81: #12582151 := low:32[RAX] +00018b97: ZF := 0 = #12582151 +00018b9e: when ZF goto %00018b9b +000195d5: goto %00018e15 + +00018e15: +00018e1b: RAX := mem[0x180006880, el]:u64 +00018e2d: #12582142 := RAX +00018e43: ZF := 0 = #12582142 +00018e4a: when ~ZF goto %00018e47 +000195d4: goto %00018e93 + +00018e47: +00018e53: R8 := RSI +00018e5b: RDX := pad:64[low:32[RDI]] +00018e63: RCX := R14 +00018e71: #12582140 := mem[0x18000B020, el]:u64 +00018e75: RSP := RSP - 8 +00018e7a: mem := mem with [RSP, el]:u64 <- 0x1800016CB +00018e7d: call #12582140 with return %00018e7f + +00018e7f: +00018e85: RBX := pad:64[low:32[RAX]] +00018e91: mem := mem with [RSP + 0x30, el]:u32 <- low:32[RAX] +000195d3: goto %00018b9b + +00018e93: +00018e99: RBX := pad:64[low:32[RAX + 1]] +00018ea5: mem := mem with [RSP + 0x30, el]:u32 <- low:32[RBX] +00018ea9: goto %00018b9b + +00018b9b: +00018ba4: goto %00018ba2 + +00018ba2: +00018bab: RAX := pad:64[low:32[RBX]] +000195d2: goto %00018bad + +00019179: +00019183: RAX := 0 +00019199: goto %00018bad + +00018bad: +00018bb5: RBX := mem[RSP + 0x78, el]:u64 +00018bd6: RSP := RSP + 0x40 +00018c01: R14 := mem[RSP, el]:u64 +00018c05: RSP := RSP + 8 +00018c11: RDI := mem[RSP, el]:u64 +00018c15: RSP := RSP + 8 +00018c21: RSI := mem[RSP, el]:u64 +00018c25: RSP := RSP + 8 +00018c32: #12582146 := mem[RSP, el]:u64 +00018c36: RSP := RSP + 8 +00018c39: call #12582146 with noreturn + +000195e1: sub sub_180001d34(sub_180001d34_result) +00019629: sub_180001d34_result :: out u32 = low:32[RAX] + +0000d706: +0000d725: RSP := RSP - 0x18 +0000d749: R8 := RCX +0000d74f: RAX := 0x5A4D +0000d76c: #12582860 := mem[0x180000000, el]:u16 - 0x5A4D +0000d78b: ZF := 0 = #12582860 +0000d792: when ~ZF goto %0000d78f +000195eb: goto %0000d8cd + +0000d8cd: +0000d8d3: RCX := extend:64[mem[0x18000003C, el]:u32] +0000d8d9: RDX := 0x180000000 +0000d904: RCX := RCX + 0x180000000 +0000d943: #12582851 := mem[RCX, el]:u32 - 0x4550 +0000d963: ZF := 0 = #12582851 +0000d969: when ~ZF goto %0000d78f +000195ea: goto %0000d96d + +0000d96d: +0000d971: RAX := 0x20B +0000d994: #12582849 := mem[RCX + 0x18, el]:u16 - 0x20B +0000d9b7: ZF := 0 = #12582849 +0000d9bd: when ~ZF goto %0000d78f +000195e9: goto %0000d9c1 + +0000d78f: +0000d7a1: RAX := 63:8[RAX].0 +0000d7b8: goto %0000d7b6 + +0000d9c1: +0000d9e8: R8 := R8 - 0x180000000 +0000da11: RDX := pad:64[mem[RCX + 0x14, el]:u16] +0000da32: RDX := RDX + 0x18 +0000da77: #12582840 := RCX +0000da7c: RDX := RDX + #12582840 +0000daa7: RAX := pad:64[mem[RCX + 6, el]:u16] +0000dab1: RCX := RAX + (RAX << 2) +0000dabb: R9 := RDX + (RCX << 3) +000195e8: goto %0000dabd + +0000dabd: +0000dac7: mem := mem with [RSP, el]:u64 <- RDX +0000dae4: #12582838 := RDX - R9 +0000db03: ZF := 0 = #12582838 +0000db0a: when ZF goto %0000db07 +000195e7: goto %0000dbfb + +0000db07: +0000db17: RDX := 0 +000195e6: goto %0000db2b + +0000dbfb: +0000dc03: RCX := pad:64[mem[RDX + 0xC, el]:u32] +0000dc25: CF := R8 < RCX +0000dc46: when CF goto %0000dc43 +000195e5: goto %0000dc8d + +0000dc8d: +0000dc95: RAX := pad:64[mem[RDX + 8, el]:u32] +0000dcbb: #12582826 := low:32[RCX] +0000dcc0: RAX := pad:64[low:32[RAX] + #12582826] +0000dd03: CF := R8 < RAX +0000dd23: when CF goto %0000db2b +000195e4: goto %0000dc43 + +0000db2b: +0000db3b: #12582836 := RDX +0000db51: ZF := 0 = #12582836 +0000db58: when ~ZF goto %0000db55 +000195e3: goto %0000dbd7 + +0000db55: +0000db77: #12582834 := mem[RDX + 0x24, el]:u32 +0000db84: OF := high:1[mem[RDX + 0x24, el]:u32 & + (mem[RDX + 0x24, el]:u32 ^ #12582834)] +0000db93: SF := high:1[#12582834] +0000dba4: when ~((SF | OF) & ~(SF & OF)) goto %0000db9e +000195e2: goto %0000dbb3 + +0000db9e: +0000dbad: RAX := high:56[RAX].1 +0000dbb1: goto %0000d7b6 + +0000dbb3: +0000dbbf: RAX := 63:8[RAX].0 +0000dbd5: goto %0000d7b6 + +0000dbd7: +0000dbe3: RAX := 63:8[RAX].0 +0000dbf9: goto %0000d7b6 + +0000d7b6: +0000d7d8: RSP := RSP + 0x18 +0000d804: #12582855 := mem[RSP, el]:u64 +0000d808: RSP := RSP + 8 +0000d80b: call #12582855 with noreturn + +0000dc43: +0000dc68: RDX := RDX + 0x28 +0000dc8b: goto %0000dabd + +000195ec: sub sub_180002746(sub_180002746_result) +0001962a: sub_180002746_result :: out u32 = low:32[RAX] + +00004de1: +00004de5: call mem[0x18000A0F8, el]:u64 with noreturn + +000195ed: sub sub_18000274c(sub_18000274c_result) +0001962b: sub_18000274c_result :: out u32 = low:32[RAX] + +00004de7: +00004deb: call mem[0x18000A100, el]:u64 with noreturn + +000195ee: sub sub_180002752(sub_180002752_result) +0001962c: sub_180002752_result :: out u32 = low:32[RAX] + +00004ded: +00004df1: call mem[0x18000A108, el]:u64 with noreturn + +000195ef: sub sub_180002758(sub_180002758_result) +0001962d: sub_180002758_result :: out u32 = low:32[RAX] + +00004df3: +00004df7: call mem[0x18000A1A0, el]:u64 with noreturn + +000195f0: sub sub_18000275e(sub_18000275e_result) +0001962e: sub_18000275e_result :: out u32 = low:32[RAX] + +00004df9: +00004dfd: call mem[0x18000A178, el]:u64 with noreturn + +000195f1: sub sub_18000276a(sub_18000276a_result) +0001962f: sub_18000276a_result :: out u32 = low:32[RAX] + +00004e05: +00004e09: call mem[0x18000A188, el]:u64 with noreturn + +000195f2: sub sub_180002770(sub_180002770_result) +00019630: sub_180002770_result :: out u32 = low:32[RAX] + +00004e0b: +00004e0f: call mem[0x18000A190, el]:u64 with noreturn + +000195f3: sub sub_180002776(sub_180002776_result) +00019631: sub_180002776_result :: out u32 = low:32[RAX] + +00004e11: +00004e15: call mem[0x18000A198, el]:u64 with noreturn + +000195f4: sub sub_18000277c(sub_18000277c_result) +00019632: sub_18000277c_result :: out u32 = low:32[RAX] + +00004e17: +00004e1b: call mem[0x18000A1D0, el]:u64 with noreturn + +000195f5: sub sub_180002788(sub_180002788_result) +00019633: sub_180002788_result :: out u32 = low:32[RAX] + +00004e23: +00004e27: call mem[0x18000A1B0, el]:u64 with noreturn + +000195f6: sub sub_180002794(sub_180002794_result) +00019634: sub_180002794_result :: out u32 = low:32[RAX] + +00004e2f: +00004e33: call mem[0x18000A1C0, el]:u64 with noreturn + +000195f7: sub sub_18000279a(sub_18000279a_result) +00019635: sub_18000279a_result :: out u32 = low:32[RAX] + +00004e35: +00004e39: call mem[0x18000A1C8, el]:u64 with noreturn + +000195f8: sub sub_1800027a0(sub_1800027a0_result) +00019636: sub_1800027a0_result :: out u32 = low:32[RAX] + +00004e3b: +00004e41: RAX := high:56[RAX].1 +00004e4e: #12582883 := mem[RSP, el]:u64 +00004e52: RSP := RSP + 8 +00004e55: call #12582883 with noreturn + +000195f9: sub sub_1800027a4(sub_1800027a4_result) +00019637: sub_1800027a4_result :: out u32 = low:32[RAX] + +00004e5b: +00004e61: RAX := high:56[RAX].1 +00004e6e: #12582882 := mem[RSP, el]:u64 +00004e72: RSP := RSP + 8 +00004e75: call #12582882 with noreturn + +000195fa: sub sub_1800027a8(sub_1800027a8_result) +00019638: sub_1800027a8_result :: out u32 = low:32[RAX] + +00004e7b: +00004e81: RAX := high:56[RAX].1 +00004e8e: #12582881 := mem[RSP, el]:u64 +00004e92: RSP := RSP + 8 +00004e95: call #12582881 with noreturn + +000195fb: sub sub_1800027ac(sub_1800027ac_result) +00019639: sub_1800027ac_result :: out u32 = low:32[RAX] + +00004e9b: +00004ea1: RAX := high:56[RAX].1 +00004eae: #12582880 := mem[RSP, el]:u64 +00004eb2: RSP := RSP + 8 +00004eb5: call #12582880 with noreturn + +000195fc: sub sub_1800027b0(sub_1800027b0_result) +0001963a: sub_1800027b0_result :: out u32 = low:32[RAX] + +00004ebb: +00004ec1: RAX := high:56[RAX].1 +00004ece: #12582879 := mem[RSP, el]:u64 +00004ed2: RSP := RSP + 8 +00004ed5: call #12582879 with noreturn + +00010e53: sub intrinsic:x86:lock() + + +00010e73: sub intrinsic:x86:unlock() + + +00004d89: sub interrupt:#3(interrupt:#3_result) +0001963b: interrupt:#3_result :: out u32 = low:32[RAX] + +0000f698: sub interrupt:#41(interrupt:#41_result) +0001963c: interrupt:#41_result :: out u32 = low:32[RAX] -- GitLab