File trigona_be6dfedd91e1ebc81d58a61b05b0ef93322425b247636a0f7f5c3eeebbc52edd.exe
Function:
    00408960
    00408960TObject.ClassInfo:
    00408960mov rax, [rcx-168]
    00408967ret
    00408960
    00408968
    00408968 // align 0x10
    00408970
    00408970TObject.ClassName:
    00408970push rbx
    00408971sub rsp, 32
    00408975mov rbx, rdx
    00408978mov rax, rbx
    0040897bmov rdx, [rcx-136]
    00408982mov rcx, rax
    00408985call fn_408770
    0040898amov rax, rbx
    0040898dadd rsp, 32
    00408991pop rbx
    00408992ret
    00408970
    00408993
    00408993 // align 0x10
    004089a0
    004089a0TObject.QualifiedClassName:
    004089a0push rbp
    004089a1sub rsp, 96
    004089a5mov rbp, rsp
    004089a8mov [rbp+56], rcx
    004089acmov [rbp+64], rdx
    004089b0mov [rbp+72], 0
    004089b8mov [rbp+88], 0
    004089c0nop
    004089c1mov rcx, [rbp+56]
    004089c5lea rdx, [rbp+88]
    004089c9call TObject.UnitScope
    004089cecmp [rbp+88], 0
    004089d3jne 0x4089e4
    004089d5mov rcx, [rbp+56]
    004089d9mov rdx, [rbp+64]
    004089ddcall TObject.ClassName
    004089e2jmp 0x408a13
    004089e4
    004089e4loc_4089e4:
    004089e4mov rcx, [rbp+56]
    004089e8lea rdx, [rbp+72]
    004089eccall TObject.ClassName
    004089f1mov rcx, [rbp+64]
    004089f5mov edx, 3
    004089famov r8, [rbp+88]
    004089felea r9, [rip+95]
    00408a05mov rax, [rbp+72]
    00408a09mov [rsp+32], rax
    00408a0ecall fn_40dbb0
    00408a13
    00408a13loc_408a13:
    00408a13nop
    00408a14lea rcx, [rbp+72]
    00408a18call fn_40bcf0
    00408a1dlea rcx, [rbp+88]
    00408a21call fn_40bcf0
    00408a26mov rax, [rbp+64]
    00408a2alea rsp, [rbp+96]
    00408a2epop rbp
    00408a2fret
    004089a0
    00408a30
    00408a30fn_408a30:
    00408a30push rbp
    00408a31push rbx
    00408a32sub rsp, 40
    00408a36mov rbp, rsp
    00408a39mov rbx, rdx
    00408a3clea rcx, [rbx+72]
    00408a40call fn_40bcf0
    00408a45lea rcx, [rbx+88]
    00408a49call fn_40bcf0
    00408a4elea rsp, [rbp+40]
    00408a52pop rbx
    00408a53pop rbp
    00408a54ret
    00408a30
    00408a55
    00408a55 00 00 00 b0 04 02 00 ff ff ff ff ...........
    00408a60 01 00 00 00 2e 00 00 00 cc cc cc cc cc cc cc cc ................
    00408a70
    00408a70TObject.ClassNameIs:
    00408a70sub rsp, 40
    00408a74mov rcx, [rcx-136]
    00408a7bcall fn_4087d0
    00408a80add rsp, 40
    00408a84ret
    00408a70
    00408a85
    00408a85 // align 0x10
    00408a90
    00408a90TObject.ClassParent:
    00408a90mov rax, [rcx-120]
    00408a94test rax, rax
    00408a97je 0x408a9c
    00408a99mov rax, [rax]
    00408a9c
    00408a9cloc_408a9c:
    00408a9cret
    00408a90
    00408a9d
    00408a9d // align 0x10
    00408aa0
    00408aa0TObject.InstanceSize:
    00408aa0mov eax, [rcx-128]
    00408aa3ret
    00408aa0
    00408aa4
    00408aa4 // align 0x10
    00408ab0
    00408ab0TObject.NewInstance:
    00408ab0push rbx
    00408ab1sub rsp, 32
    00408ab5mov rbx, rcx
    00408ab8movsxd rcx, [rbx-128]
    00408abccall fn_405700
    00408ac1mov rcx, rbx
    00408ac4mov rdx, rax
    00408ac7call TObject.InitInstance
    00408accadd rsp, 32
    00408ad0pop rbx
    00408ad1ret
    00408ab0
    00408ad2
    00408ad2 // align 0x10
    00408ae0
    00408ae0TObject.FreeInstance:
    00408ae0push rbx
    00408ae1sub rsp, 32
    00408ae5mov rbx, rcx
    00408ae8mov rcx, rbx
    00408aebcall TObject.CleanupInstance
    00408af0mov rcx, rbx
    00408af3call fn_405730
    00408af8add rsp, 32
    00408afcpop rbx
    00408afdret
    00408ae0
    00408afe
    00408afe // align 0x10
    00408b00
    00408b00TObject.CPP_ABI_1:
    00408b00ret
    00408b00
    00408b01
    00408b01 // align 0x10
    00408b10
    00408b10TObject.CPP_ABI_2:
    00408b10ret
    00408b10
    00408b11
    00408b11 // align 0x10
    00408b20
    00408b20TObject.CPP_ABI_3:
    00408b20ret
    00408b20
    00408b21
    00408b21 // align 0x10
    00408b30
    00408b30TObject.Create:
    00408b30push rbp
    00408b31push rbx
    00408b32sub rsp, 56
    00408b36mov rbp, rsp
    00408b39mov [rbp+40], rbp
    00408b3dmov [rbp+80], rcx
    00408b41mov [rbp+88], dl
    00408b44cmp [rbp+88], 0
    00408b48je 0x408b5c
    00408b4amov rcx, [rbp+80]
    00408b4emovzx rdx, [rbp+88]
    00408b53call fn_409530
    00408b58mov [rbp+80], rax
    00408b5c
    00408b5cloc_408b5c:
    00408b5cnop
    00408b5dcmp [rbp+88], 0
    00408b61je 0x408ba0
    00408b63mov rcx, [rbp+80]
    00408b67call fn_409570
    00408b6cmov [rbp+80], rax
    00408b70jmp 0x408ba0
    00408b72
    00408b72 90 90 80 7d 58 00 74 20 48 83 7d 50 00 74 ...}X.t H.}P.t
    00408b80 19 48 8b 4d 50 b2 81 48 8b 45 50 48 8b 18 ff 53 .H.MP..H.EPH...S
    00408b90 e0 48 8b 4d 50 e8 b6 09 00 00 e8 71 24 00 00 90 .H.MP......q$...
    00408ba0
    00408ba0loc_408ba0:
    00408ba0mov rax, [rbp+80]
    00408ba4lea rsp, [rbp+56]
    00408ba8pop rbx
    00408ba9pop rbp
    00408baaret
    00408b30
    00408bab
    00408bab 48 8d 44 20 00 H.D .
    00408bb0
    00408bb0fn_408bb0:
    00408bb0sub rsp, 40
    00408bb4call fn_40b050
    00408bb9add rsp, 40
    00408bbdret
    00408bb0
    00408bbe
    00408bbe // align 0x10
    00408bc0
    00408bc0TObject.Destroy:
    00408bc0push rsi
    00408bc1push rbx
    00408bc2sub rsp, 40
    00408bc6mov rbx, rcx
    00408bc9mov esi, edx
    00408bccmov rcx, rbx
    00408bcfmov edx, esi
    00408bd2call fn_4095d0
    00408bd7test sil, sil
    00408bdajle 0x408be4
    00408bdcmov rcx, rbx
    00408bdfcall fn_409550
    00408be4
    00408be4loc_408be4:
    00408be4add rsp, 40
    00408be8pop rbx
    00408be9pop rsi
    00408bearet
    00408bc0
    00408beb
    00408beb // align 0x10
    00408bf0
    00408bf0TObject.Free:
    00408bf0push rbx
    00408bf1sub rsp, 32
    00408bf5test rcx, rcx
    00408bf8je 0x408c08
    00408bfamov rax, rcx
    00408bfdmov dl, 1
    00408bffmov rbx, [rcx]
    00408c02mov rcx, rax
    00408c05call [rbx-32]
    00408c08
    00408c08loc_408c08:
    00408c08add rsp, 32
    00408c0cpop rbx
    00408c0dret
    00408bf0
    00408c0e
    00408c0e // align 0x10
    00408c10
    00408c10TObject.DisposeOf:
    00408c10sub rsp, 40
    00408c14call TObject.Free
    00408c19add rsp, 40
    00408c1dret
    00408c10
    00408c1e
    00408c1e // align 0x10
    00408c20
    00408c20TObject.GetInterfaceTable:
    00408c20mov rax, [rcx-192]
    00408c27ret
    00408c20
    00408c28
    00408c28 // align 0x10
    00408c30
    00408c30fn_408c30:
    00408c30push rbp
    00408c31push rsi
    00408c32push rbx
    00408c33sub rsp, 32
    00408c37mov rbp, rsp
    00408c3amov rbx, rcx
    00408c3dmov rax, rdx
    00408c40
    00408c40loc_408c40:
    00408c40mov rsi, [rax-176]
    00408c47mov rax, [rax-120]
    00408c4btest rax, rax
    00408c4eje 0x408c53
    00408c50mov rax, [rax]
    00408c53
    00408c53loc_408c53:
    00408c53test rax, rax
    00408c56je 0x408c6d
    00408c58test rsi, rsi
    00408c5bje 0x408c40
    00408c5dcmp [rsi], 22
    00408c60jne 0x408c40
    00408c62mov rcx, rbx
    00408c65mov rdx, rax
    00408c68call fn_408c30
    00408c6d
    00408c6dloc_408c6d:
    00408c6dnop
    00408c6etest rsi, rsi
    00408c71je 0x408cb2
    00408c73cmp [rsi], 22
    00408c76jne 0x408cb2
    00408c78mov rax, rsi
    00408c7bmovzx rcx, [rax+1]
    00408c80lea rax, [rax+rcx]
    00408c84mov rcx, rax
    00408c87mov eax, [rcx+6]
    00408c8ashl eax, 4
    00408c8dmov eax, eax
    00408c8flea rax, [rcx+rax+10]
    00408c94cmp [rax], 0
    00408c97jbe 0x408cb2
    00408c99mov rax, [rax+1]
    00408c9dtest rax, 1
    00408ca4je 0x408cb2
    00408ca6mov rcx, [rbx+72]
    00408caamov rdx, rsi
    00408cadcall fn_40f900
    00408cb2
    00408cb2loc_408cb2:
    00408cb2lea rsp, [rbp+32]
    00408cb6pop rbx
    00408cb7pop rsi
    00408cb8pop rbp
    00408cb9ret
    00408c30
    00408cba
    00408cba // align 0x10
    00408cc0
    00408cc0TObject.InitInstance:
    00408cc0push rbp
    00408cc1push rsi
    00408cc2push rbx
    00408cc3sub rsp, 32
    00408cc7mov rbp, rsp
    00408ccamov rbx, rcx
    00408ccdmov [rbp+72], rdx
    00408cd1mov rsi, rbx
    00408cd4mov rcx, [rbp+72]
    00408cd8movsxd rdx, [rsi-128]
    00408cdcxor r8, r8
    00408cdfcall fn_4069b0
    00408ce4mov rax, [rbp+72]
    00408ce8mov [rax], rsi
    00408cebmov rcx, rbx
    00408cee
    00408ceeloc_408cee:
    00408ceemov rax, [rcx-192]
    00408cf5test rax, rax
    00408cf8je 0x408d41
    00408cfaxor r8, r8
    00408cfdmov r10l, [rax]
    00408d00sub r10l, 1
    00408d04mov edx, r8l
    00408d07cmp edx, r10l
    00408d0ajg 0x408d40
    00408d0csub r10l, r8l
    00408d0fadd r10l, 1
    00408d13
    00408d13loc_408d13:
    00408d13movsxd r8, edx
    00408d16lea r8, [r8+4*r8]
    00408d1alea r8, [rax+8*r8+8]
    00408d1fmov r9, [r8+16]
    00408d23test r9, r9
    00408d26je 0x408d34
    00408d28mov r11, [rbp+72]
    00408d2cmovsxd r8, [r8+24]
    00408d30mov [r11+r8], r9
    00408d34
    00408d34loc_408d34:
    00408d34add edx, 1
    00408d37sub r10l, 1
    00408d3btest r10l, r10l
    00408d3ejne 0x408d13
    00408d40
    00408d40loc_408d40:
    00408d40nop
    00408d41
    00408d41loc_408d41:
    00408d41mov rcx, [rcx-120]
    00408d45test rcx, rcx
    00408d48je 0x408d4d
    00408d4amov rcx, [rcx]
    00408d4d
    00408d4dloc_408d4d:
    00408d4dtest rcx, rcx
    00408d50jne 0x408cee
    00408d52mov rcx, rbp
    00408d55mov rdx, rbx
    00408d58call fn_408c30
    00408d5dmov rax, [rbp+72]
    00408d61lea rsp, [rbp+32]
    00408d65pop rbx
    00408d66pop rsi
    00408d67pop rbp
    00408d68ret
    00408cc0
    00408d69
    00408d69 // align 0x10
    00408d70
    00408d70TObject.CleanupInstance:
    00408d70push rsi
    00408d71push rbx
    00408d72sub rsp, 40
    00408d76mov rbx, rcx
    00408d79mov rsi, rbx
    00408d7cmov rcx, rsi
    00408d7fcall fn_414120
    00408d84mov rax, [rsi]
    00408d87
    00408d87loc_408d87:
    00408d87mov rsi, rax
    00408d8amov rax, [rsi-176]
    00408d91test rax, rax
    00408d94je 0x408da1
    00408d96mov rcx, rbx
    00408d99mov rdx, rax
    00408d9ccall fn_40e630
    00408da1
    00408da1loc_408da1:
    00408da1mov rax, [rsi-120]
    00408da5test rax, rax
    00408da8je 0x408dad
    00408daamov rax, [rax]
    00408dad
    00408dadloc_408dad:
    00408dadtest rax, rax
    00408db0jne 0x408d87
    00408db2mov rcx, rbx
    00408db5call fn_4098b0
    00408dbaadd rsp, 40
    00408dbepop rbx
    00408dbfpop rsi
    00408dc0ret
    00408d70
    00408dc1
    00408dc1 // align 0x10
    00408dd0
    00408dd0fn_408dd0:
    00408dd0push rbx
    00408dd1sub rsp, 32
    00408dd5mov rax, 0xff00000000000000
    00408ddfmov r9, rdx
    00408de2and r9, rax
    00408de5mov rax, r9
    00408de8mov r9, 0xff00000000000000
    00408df2cmp rax, r9
    00408df5jne 0x408e12
    00408df7mov rax, 0xffffffffffffff
    00408e01and rdx, rax
    00408e04mov rdx, [rcx+rdx]
    00408e08mov rcx, r8
    00408e0bcall fn_412540
    00408e10jmp 0x408e36
    00408e12
    00408e12loc_408e12:
    00408e12mov r9, 0xfe00000000000000
    00408e1ccmp rax, r9
    00408e1fjne 0x408e2e
    00408e21mov rax, [rcx]
    00408e24movsx rdx, dx
    00408e28mov rbx, [rax+rdx]
    00408e2cjmp 0x408e31
    00408e2e
    00408e2eloc_408e2e:
    00408e2emov rbx, rdx
    00408e31
    00408e31loc_408e31:
    00408e31mov rdx, r8
    00408e34call rbx
    00408e36
    00408e36loc_408e36:
    00408e36add rsp, 32
    00408e3apop rbx
    00408e3bret
    00408dd0
    00408e3c
    00408e3c // align 0x10
    00408e40
    00408e40TObject.Equals:
    00408e40cmp rdx, rcx
    00408e43sete al
    00408e46ret
    00408e40
    00408e47
    00408e47 // align 0x10
    00408e50
    00408e50TObject.GetHashCode:
    00408e50mov rax, rcx
    00408e53shr rax, 32
    00408e57xor ecx, eax
    00408e59mov eax, ecx
    00408e5bret
    00408e50
    00408e5c
    00408e5c // align 0x10
    00408e60
    00408e60TObject.GetInterface:
    00408e60push rbp
    00408e61push rdi
    00408e62push rsi
    00408e63push rbx
    00408e64sub rsp, 56
    00408e68mov rbp, rsp
    00408e6bmov rbx, rcx
    00408e6emov rsi, rdx
    00408e71mov rdi, r8
    00408e74mov [rdi], 0
    00408e7bmov rcx, [rbx]
    00408e7emov rdx, rsi
    00408e81call TObject.GetInterfaceEntry
    00408e86test rax, rax
    00408e89je 0x408ec0
    00408e8bmov ecx, [rax+24]
    00408e8etest ecx, ecx
    00408e90je 0x408eaf
    00408e92movsxd rcx, ecx
    00408e95lea rax, [rbx+rcx]
    00408e99mov [rdi], rax
    00408e9ctest rax, rax
    00408e9fje 0x408eec
    00408ea1mov rax, [rdi]
    00408ea4mov rcx, rax
    00408ea7mov rax, [rax]
    00408eaacall [rax+8]
    00408eadjmp 0x408eec
    00408eaf
    00408eafloc_408eaf:
    00408eafmov rcx, rbx
    00408eb2mov rdx, [rax+32]
    00408eb6mov r8, rdi
    00408eb9call fn_408dd0
    00408ebejmp 0x408eec
    00408ec0
    00408ec0loc_408ec0:
    00408ec0lea rax, [rip+0x501a9]
    00408ec7mov [rbp+40], rax
    00408ecbmov [rbp+32], rsi
    00408ecfmov rax, [rbp+40]
    00408ed3mov rcx, [rbp+32]
    00408ed7mov rdx, [rax]
    00408edacmp rdx, [rcx]
    00408eddjne 0x408eec
    00408edfmov rax, [rax+8]
    00408ee3cmp rax, [rcx+8]
    00408ee7jne 0x408eec
    00408ee9mov [rdi], rbx
    00408eec
    00408eecloc_408eec:
    00408eeccmp [rdi], 0
    00408ef0setne al
    00408ef3lea rsp, [rbp+56]
    00408ef7pop rbx
    00408ef8pop rsi
    00408ef9pop rdi
    00408efapop rbp
    00408efbret
    00408e60
    00408efc
    00408efc // align 0x10
    00408f00
    00408f00TObject.GetInterfaceEntry:
    00408f00push rbp
    00408f01sub rsp, 16
    00408f05mov rbp, rsp
    00408f08
    00408f08loc_408f08:
    00408f08mov r8, [rcx-192]
    00408f0ftest r8, r8
    00408f12je 0x408f61
    00408f14lea rax, [r8+8]
    00408f18xor r9, r9
    00408f1bmov r10l, [r8]
    00408f1esub r10l, 1
    00408f22mov r8l, r9l
    00408f25cmp r8l, r10l
    00408f28jg 0x408f60
    00408f2asub r10l, r9l
    00408f2dadd r10l, 1
    00408f31
    00408f31loc_408f31:
    00408f31mov [rbp+8], rax
    00408f35mov [rbp], rdx
    00408f39mov r8, [rbp+8]
    00408f3dmov r9, [rbp]
    00408f41mov r11, [r8]
    00408f44cmp r11, [r9]
    00408f47jne 0x408f53
    00408f49mov r8, [r8+8]
    00408f4dcmp r8, [r9+8]
    00408f51je 0x408f74
    00408f53
    00408f53loc_408f53:
    00408f53add rax, 40
    00408f57sub r10l, 1
    00408f5btest r10l, r10l
    00408f5ejne 0x408f31
    00408f60
    00408f60loc_408f60:
    00408f60nop
    00408f61
    00408f61loc_408f61:
    00408f61mov rcx, [rcx-120]
    00408f65test rcx, rcx
    00408f68je 0x408f6d
    00408f6amov rcx, [rcx]
    00408f6d
    00408f6dloc_408f6d:
    00408f6dtest rcx, rcx
    00408f70jne 0x408f08
    00408f72xor eax, eax
    00408f74
    00408f74loc_408f74:
    00408f74lea rsp, [rbp+16]
    00408f78pop rbp
    00408f79ret
    00408f00
    00408f7a
    00408f7a // align 0x10
    00408f80
    00408f80TObject.UnitName:
    00408f80push rsi
    00408f81push rbx
    00408f82sub rsp, 40
    00408f86mov rbx, rdx
    00408f89mov rax, [rcx-168]
    00408f90test rax, rax
    00408f93je 0x408fd7
    00408f95movzx rcx, [rax+1]
    00408f9alea rsi, [rax+rcx+20]
    00408f9fmov rcx, rbx
    00408fa2mov rdx, rsi
    00408fa5call fn_408770
    00408faacmp [rsi+1], 64
    00408faejne 0x408fdf
    00408fb0lea rcx, [rip+65]
    00408fb7mov rdx, [rbx]
    00408fbamov r8l, 1
    00408fc0call fn_40dd80
    00408fc5mov rcx, rbx
    00408fc8mov edx, 1
    00408fcdmov r8l, eax
    00408fd0call fn_40dd00
    00408fd5jmp 0x408fdf
    00408fd7
    00408fd7loc_408fd7:
    00408fd7mov rcx, rbx
    00408fdacall fn_40bcf0
    00408fdf
    00408fdfloc_408fdf:
    00408fdfmov rax, rbx
    00408fe2add rsp, 40
    00408fe6pop rbx
    00408fe7pop rsi
    00408fe8ret
    00408f80
    00408fe9
    00408fe9 00 00 00 b0 04 02 00 .......
    00408ff0 ff ff ff ff 01 00 00 00 3a 00 00 00 cc cc cc cc ........:.......
    00409000
    00409000TObject.UnitScope:
    00409000push rbp
    00409001push rbx
    00409002sub rsp, 72
    00409006mov rbp, rsp
    00409009mov [rbp+40], rcx
    0040900dmov [rbp+48], rdx
    00409011mov [rbp+56], 0
    00409019nop
    0040901amov rax, [rbp+40]
    0040901emov rax, [rax-168]
    00409025test rax, rax
    00409028je 0x40908b
    0040902amovzx rcx, [rax+1]
    0040902flea rbx, [rax+rcx+20]
    00409034mov rcx, [rbp+48]
    00409038mov rdx, rbx
    0040903bcall fn_408770
    00409040cmp [rbx+1], 64
    00409044jne 0x409094
    00409046lea rcx, [rip+135]
    0040904dmov rax, [rbp+48]
    00409051mov rdx, [rax]
    00409054mov r8l, 1
    0040905acall fn_40dd80
    0040905flea rcx, [rbp+56]
    00409063mov rdx, [rbp+48]
    00409067mov rdx, [rdx]
    0040906amov r8l, 2
    00409070mov r9l, eax
    00409073sub r9l, 2
    00409077call fn_40dca0
    0040907cmov rcx, [rbp+48]
    00409080mov rdx, [rbp+56]
    00409084call fn_40c360
    00409089jmp 0x409094
    0040908b
    0040908bloc_40908b:
    0040908bmov rcx, [rbp+48]
    0040908fcall fn_40bcf0
    00409094
    00409094loc_409094:
    00409094nop
    00409095lea rcx, [rbp+56]
    00409099call fn_40bcf0
    0040909emov rax, [rbp+48]
    004090a2lea rsp, [rbp+72]
    004090a6pop rbx
    004090a7pop rbp
    004090a8ret
    00409000
    004090a9
    004090a9 48 8d 80 00 00 00 00 H......
    004090b0
    004090b0fn_4090b0:
    004090b0push rbp
    004090b1sub rsp, 32
    004090b5mov rbp, rsp
    004090b8lea rcx, [rdx+56]
    004090bccall fn_40bcf0
    004090c1lea rsp, [rbp+32]
    004090c5pop rbp
    004090c6ret
    004090b0
    004090c7
    004090c7 00 b0 04 02 00 ff ff ff ff .........
    004090d0 01 00 00 00 3a 00 00 00 cc cc cc cc cc cc cc cc ....:...........
    004090e0
    004090e0fn_4090e0:
    004090e0sub rsp, 40
    004090e4test rcx, rcx
    004090e7je 0x4090f5
    004090e9mov rcx, [rcx]
    004090eccall TObject.InheritsFrom
    004090f1test al, al
    004090f3jne 0x4090f9
    004090f5
    004090f5loc_4090f5:
    004090f5xor eax, eax
    004090f7jmp 0x4090fb
    004090f9
    004090f9loc_4090f9:
    004090f9mov al, 1
    004090fb
    004090fbloc_4090fb:
    004090fbadd rsp, 40
    004090ffret
    004090e0
    00409100
    00409100fn_409100:
    00409100push rbp
    00409101push rbx
    00409102sub rsp, 40
    00409106mov rbp, rsp
    00409109mov rbx, rcx
    0040910ctest rcx, rcx
    0040910fje 0x409125
    00409111call fn_4090e0
    00409116test al, al
    00409118jne 0x409125
    0040911amov cl, 10
    0040911cmov rdx, [rbp+56]
    00409120call fn_4059c0
    00409125
    00409125loc_409125:
    00409125mov rax, rbx
    00409128lea rsp, [rbp+40]
    0040912cpop rbx
    0040912dpop rbp
    0040912eret
    00409100
    0040912f
    0040912f // align 0x10
    00409130
    00409130fn_409130:
    00409130push rbp
    00409131push rbx
    00409132sub rsp, 56
    00409136mov rbp, rsp
    00409139mov rbx, rdx
    0040913cmov [rbp+40], 0
    00409144lea rax, [rbp+40]
    00409148mov rdx, rcx
    0040914blea r8, [rip+0x4ff1e]
    00409152mov rcx, rax
    00409155call fn_412590
    0040915amov rcx, [rbp+40]
    0040915emov rdx, rbx
    00409161call fn_409100
    00409166lea rsp, [rbp+56]
    0040916apop rbx
    0040916bpop rbp
    0040916cret
    00409130
    0040916d
    0040916d // align 0x10
    00409170
    00409170fn_409170:
    00409170mov rax, rcx
    00409173
    00409173loc_409173:
    00409173mov rcx, [rax-144]
    0040917atest rcx, rcx
    0040917dje 0x4091d0
    0040917fxor r9, r9
    00409182movzx r10l, [rcx]
    00409186sub r10l, 1
    0040918amov r8l, r9l
    0040918dcmp r8l, r10l
    00409190ja 0x4091cf
    00409192sub r10l, r9l
    00409195add r10l, 1
    00409199
    00409199loc_409199:
    00409199mov r9l, r8l
    0040919ccmp [rcx+2*r9+2], dx
    004091a2jne 0x4091c2
    004091a4movzx eax, [rcx]
    004091a7add eax, eax
    004091a9mov eax, eax
    004091ablea rax, [rcx+rax+2]
    004091b0add r8l, r8l
    004091b3add r8l, r8l
    004091b6add r8l, r8l
    004091b9mov r8l, r8l
    004091bcmov rax, [rax+r8]
    004091c0jmp 0x4091e1
    004091c2
    004091c2loc_4091c2:
    004091c2add r8l, 1
    004091c6sub r10l, 1
    004091catest r10l, r10l
    004091cdjne 0x409199
    004091cf
    004091cfloc_4091cf:
    004091cfnop
    004091d0
    004091d0loc_4091d0:
    004091d0mov rax, [rax-120]
    004091d4test rax, rax
    004091d7je 0x4091de
    004091d9mov rax, [rax]
    004091dcjmp 0x409173
    004091de
    004091deloc_4091de:
    004091denop
    004091dfxor eax, eax
    004091e1
    004091e1loc_4091e1:
    004091e1ret
    00409170
    004091e2
    004091e2 // align 0x10
    004091f0
    004091f0TObject.InheritsFrom:
    004091f0mov rax, rcx
    004091f3
    004091f3loc_4091f3:
    004091f3cmp rax, rdx
    004091f6je 0x409206
    004091f8mov rax, [rax-120]
    004091fctest rax, rax
    004091ffje 0x409209
    00409201mov rax, [rax]
    00409204jmp 0x4091f3
    00409206
    00409206loc_409206:
    00409206nop
    00409207mov al, 1
    00409209
    00409209loc_409209:
    00409209ret
    004091f0
    0040920a
    0040920a // align 0x10
    00409210
    00409210TObject.SafeCallException:
    00409210mov eax, 0xffffffff8000ffff
    00409215ret
    00409210
    00409216
    00409216 // align 0x10
    00409220
    00409220TObject.ToString:
    00409220push rbx
    00409221sub rsp, 32
    00409225mov rbx, rdx
    00409228mov rcx, [rcx]
    0040922bmov rdx, rbx
    0040922ecall TObject.ClassName
    00409233mov rax, rbx
    00409236add rsp, 32
    0040923apop rbx
    0040923bret
    00409220
    0040923c
    0040923c // align 0x10
    00409240
    00409240TObject.DefaultHandler:
    00409240ret
    00409240
    00409241
    00409241 // align 0x10
    00409250
    00409250TObject.AfterConstruction:
    00409250ret
    00409250
    00409251
    00409251 // align 0x10
    00409260
    00409260TObject.BeforeDestruction:
    00409260ret
    00409260
    00409261
    00409261 // align 0x10
    00409270
    00409270TObject.Dispatch:
    00409270push rbp
    00409271push rdi
    00409272push rsi
    00409273push rbx
    00409274sub rsp, 56
    00409278mov rbp, rsp
    0040927bmov rbx, rcx
    0040927emov rsi, rdx
    00409281movzx rax, [rsi]
    00409285test ax, ax
    00409288je 0x4092c5
    0040928acmp ax, -16384
    0040928fjae 0x4092c5
    00409291mov rdi, rbx
    00409294mov rcx, [rdi]
    00409297mov edx, eax
    00409299call fn_409170
    0040929etest rax, rax
    004092a1je 0x4092b7
    004092a3mov [rbp+40], rdi
    004092a7mov [rbp+32], rax
    004092abmov rcx, [rbp+40]
    004092afmov rdx, rsi
    004092b2call [rbp+32]
    004092b5jmp 0x4092d1
    004092b7
    004092b7loc_4092b7:
    004092b7mov rcx, rbx
    004092bamov rdx, rsi
    004092bdmov rbx, [rbx]
    004092c0call [rbx-56]
    004092c3jmp 0x4092d1
    004092c5
    004092c5loc_4092c5:
    004092c5mov rcx, rbx
    004092c8mov rdx, rsi
    004092cbmov rbx, [rbx]
    004092cecall [rbx-56]
    004092d1
    004092d1loc_4092d1:
    004092d1lea rsp, [rbp+56]
    004092d5pop rbx
    004092d6pop rsi
    004092d7pop rdi
    004092d8pop rbp
    004092d9ret
    00409270
    004092da
    004092da // align 0x10
    004092e0
    004092e0TObject.MethodAddress:
    004092e0push rbp
    004092e1push r13
    004092e3push rdi
    004092e4push rsi
    004092e5push rbx
    004092e6sub rsp, 288
    004092edmov rbp, rsp
    004092f0mov rax, rcx
    004092f3mov rsi, rdx
    004092f6movzx rcx, [rsi]
    004092falea rcx, [rcx+1]
    004092felea rdi, [rbp+32]
    00409302rep movsb [rdi], [rsi]
    00409304xor ebx, ebx
    00409306mov r13, rax
    00409309
    00409309loc_409309:
    00409309mov rax, [r13-152]
    00409310test rax, rax
    00409313je 0x40931f
    00409315movzx rsi, [rax]
    00409319add rax, 2
    0040931djmp 0x409321
    0040931f
    0040931floc_40931f:
    0040931fxor esi, esi
    00409321
    00409321loc_409321:
    00409321test si, si
    00409324jbe 0x409360
    00409326mov rdi, rax
    00409329test si, si
    0040932cjbe 0x40935f
    0040932e
    0040932eloc_40932e:
    0040932emovzx rax, [rdi+10]
    00409333cmp al, [rbp+32]
    00409336jne 0x40934f
    00409338lea rcx, [rdi+10]
    0040933clea rdx, [rbp+32]
    00409340call fn_408880
    00409345test al, al
    00409347je 0x40934f
    00409349mov rbx, [rdi+2]
    0040934djmp 0x409372
    0040934f
    0040934floc_40934f:
    0040934fsub si, 1
    00409353movzx rax, [rdi]
    00409357add rdi, rax
    0040935atest si, si
    0040935dja 0x40932e
    0040935f
    0040935floc_40935f:
    0040935fnop
    00409360
    00409360loc_409360:
    00409360mov r13, [r13-120]
    00409364test r13, r13
    00409367je 0x40936d
    00409369mov r13, [r13]
    0040936d
    0040936dloc_40936d:
    0040936dtest r13, r13
    00409370jne 0x409309
    00409372
    00409372loc_409372:
    00409372mov rax, rbx
    00409375lea rsp, [rbp+288]
    0040937cpop rbx
    0040937dpop rsi
    0040937epop rdi
    0040937fpop r13
    00409381pop rbp
    00409382ret
    004092e0
    00409383
    00409383 // align 0x10
    00409390
    00409390TObject.MethodAddress_2:
    00409390push rbp
    00409391push rbx
    00409392sub rsp, 296
    00409399mov rbp, rsp
    0040939cmov rbx, rcx
    0040939flea rcx, [rbp+32]
    004093a3call fn_414450
    004093a8mov rcx, rbx
    004093ablea rdx, [rbp+32]
    004093afcall TObject.MethodAddress
    004093b4lea rsp, [rbp+296]
    004093bbpop rbx
    004093bcpop rbp
    004093bdret
    00409390
    004093be
    004093be // align 0x10
    004093c0
    004093c0TObject.MethodName:
    004093c0push rdi
    004093c1push rsi
    004093c2push rbx
    004093c3sub rsp, 32
    004093c7mov rbx, rcx
    004093camov rsi, rdx
    004093cdmov rdi, r8
    004093d0mov rcx, rsi
    004093d3call fn_40bcf0
    004093d8mov rdx, rbx
    004093db
    004093dbloc_4093db:
    004093dbmov rax, [rdx-152]
    004093e2test rax, rax
    004093e5je 0x4093f1
    004093e7movzx rcx, [rax]
    004093ebadd rax, 2
    004093efjmp 0x4093f3
    004093f1
    004093f1loc_4093f1:
    004093f1xor ecx, ecx
    004093f3
    004093f3loc_4093f3:
    004093f3test cx, cx
    004093f6jbe 0x409422
    004093f8test cx, cx
    004093fbjbe 0x409421
    004093fd
    004093fdloc_4093fd:
    004093fdcmp [rax+2], rdi
    00409401jne 0x409411
    00409403mov rcx, rsi
    00409406lea rdx, [rax+10]
    0040940acall fn_408770
    0040940fjmp 0x409433
    00409411
    00409411loc_409411:
    00409411sub cx, 1
    00409415movzx r8, [rax]
    00409419add rax, r8
    0040941ctest cx, cx
    0040941fja 0x4093fd
    00409421
    00409421loc_409421:
    00409421nop
    00409422
    00409422loc_409422:
    00409422mov rdx, [rdx-120]
    00409426test rdx, rdx
    00409429je 0x40942e
    0040942bmov rdx, [rdx]
    0040942e
    0040942eloc_40942e:
    0040942etest rdx, rdx
    00409431jne 0x4093db
    00409433
    00409433loc_409433:
    00409433mov rax, rsi
    00409436add rsp, 32
    0040943apop rbx
    0040943bpop rsi
    0040943cpop rdi
    0040943dret
    004093c0
    0040943e
    0040943e // align 0x10
    00409440
    00409440TObject.FieldAddress:
    00409440push rbp
    00409441push r14
    00409443push r13
    00409445push rdi
    00409446push rsi
    00409447push rbx
    00409448sub rsp, 312
    0040944fmov rbp, rsp
    00409452mov [rbp+40], rcx
    00409456mov rsi, rdx
    00409459movzx rax, [rsi]
    0040945dlea rcx, [rax+1]
    00409461lea rdi, [rbp+48]
    00409465rep movsb [rdi], [rsi]
    00409467xor ebx, ebx
    00409469mov rax, [rbp+40]
    0040946dmov r14, [rax]
    00409470
    00409470loc_409470:
    00409470mov rsi, [r14-160]
    00409477test rsi, rsi
    0040947aje 0x40948a
    0040947cmovzx rdi, [rsi]
    00409480add rsi, 2
    00409484add rsi, 8
    00409488jmp 0x40948c
    0040948a
    0040948aloc_40948a:
    0040948axor edi, edi
    0040948c
    0040948cloc_40948c:
    0040948ctest di, di
    0040948fjbe 0x4094d7
    00409491test di, di
    00409494jbe 0x4094d6
    00409496
    00409496loc_409496:
    00409496lea r13, [rsi+6]
    0040949amovzx rax, [r13]
    0040949fcmp al, [rbp+48]
    004094a2jne 0x4094c0
    004094a4mov rcx, r13
    004094a7lea rdx, [rbp+48]
    004094abcall fn_408880
    004094b0test al, al
    004094b2je 0x4094c0
    004094b4mov eax, [rsi]
    004094b6mov rcx, [rbp+40]
    004094balea rbx, [rcx+rax]
    004094bejmp 0x4094e8
    004094c0
    004094c0loc_4094c0:
    004094c0sub di, 1
    004094c4movzx rax, [r13]
    004094c9add eax, 7
    004094ccmov eax, eax
    004094ceadd rsi, rax
    004094d1test di, di
    004094d4ja 0x409496
    004094d6
    004094d6loc_4094d6:
    004094d6nop
    004094d7
    004094d7loc_4094d7:
    004094d7mov r14, [r14-120]
    004094dbtest r14, r14
    004094deje 0x4094e3
    004094e0mov r14, [r14]
    004094e3
    004094e3loc_4094e3:
    004094e3test r14, r14
    004094e6jne 0x409470
    004094e8
    004094e8loc_4094e8:
    004094e8mov rax, rbx
    004094eblea rsp, [rbp+312]
    004094f2pop rbx
    004094f3pop rsi
    004094f4pop rdi
    004094f5pop r13
    004094f7pop r14
    004094f9pop rbp
    004094faret
    00409440
    004094fb
    004094fb // align 0x10
    00409500
    00409500TObject.FieldAddress_2:
    00409500push rbp
    00409501push rbx
    00409502sub rsp, 296
    00409509mov rbp, rsp
    0040950cmov rbx, rcx
    0040950flea rcx, [rbp+32]
    00409513call fn_414450
    00409518mov rcx, rbx
    0040951blea rdx, [rbp+32]
    0040951fcall TObject.FieldAddress
    00409524lea rsp, [rbp+296]
    0040952bpop rbx
    0040952cpop rbp
    0040952dret
    00409500
    0040952e
    0040952e // align 0x10
    00409530
    00409530fn_409530:
    00409530sub rsp, 40
    00409534mov rax, rcx
    00409537test dl, dl
    00409539jl 0x409541
    0040953bmov rcx, rax
    0040953ecall [rax-48]
    00409541
    00409541loc_409541:
    00409541add rsp, 40
    00409545ret
    00409530
    00409546
    00409546 // align 0x10
    00409550
    00409550fn_409550:
    00409550push rbx
    00409551sub rsp, 32
    00409555mov rax, rcx
    00409558mov rbx, [rcx]
    0040955bmov rcx, rax
    0040955ecall [rbx-40]
    00409561add rsp, 32
    00409565pop rbx
    00409566ret
    00409550
    00409567
    00409567 // align 0x10
    00409570
    00409570fn_409570:
    00409570push rbp
    00409571push rbx
    00409572sub rsp, 72
    00409576mov rbp, rsp
    00409579mov [rbp+40], rbp
    0040957dmov [rbp+96], rcx
    00409581nop
    00409582mov rcx, [rbp+96]
    00409586mov rax, [rbp+96]
    0040958amov rbx, [rax]
    0040958dcall [rbx-80]
    00409590mov rax, [rbp+96]
    00409594mov [rbp+56], rax
    00409598jmp 0x4095b2
    0040959a
    0040959a 90 90 48 8b 4d 60 ..H.M`
    004095a0 b2 01 e8 29 00 00 00 e8 64 1a 00 00 e8 6f 1b 00 ...)....d....o..
    004095b0 00 90 ..
    004095b2
    004095b2loc_4095b2:
    004095b2mov rax, [rbp+56]
    004095b6lea rsp, [rbp+72]
    004095bapop rbx
    004095bbpop rbp
    004095bcret
    00409570
    004095bd
    004095bd 48 8b c0 H..
    004095c0
    004095c0fn_4095c0:
    004095c0sub rsp, 40
    004095c4call fn_40b050
    004095c9add rsp, 40
    004095cdret
    004095c0
    004095ce
    004095ce // align 0x10
    004095d0
    004095d0fn_4095d0:
    004095d0push rbx
    004095d1sub rsp, 32
    004095d5test dl, dl
    004095d7jle 0x4095e5
    004095d9mov rax, rcx
    004095dcmov rbx, [rcx]
    004095dfmov rcx, rax
    004095e2call [rbx-72]
    004095e5
    004095e5loc_4095e5:
    004095e5add rsp, 32
    004095e9pop rbx
    004095earet
    004095d0
    004095eb
    004095eb // align 0x10
    004095f0
    004095f0fn_4095f0:
    004095f0push rbx
    004095f1sub rsp, 32
    004095f5mov rbx, rcx
    004095f8mov eax, [rbx]
    004095facmp eax, 10
    004095fdjg 0x409608
    004095ffcmp [rip+0x5ba9a], 1
    00409606jg 0x409654
    00409608
    00409608loc_409608:
    00409608cmp eax, 10
    0040960bjl 0x409614
    0040960dmov ecx, eax
    0040960fsub ecx, 10
    00409612jmp 0x409616
    00409614
    00409614loc_409614:
    00409614mov ecx, eax
    00409616
    00409616loc_409616:
    00409616mov r8l, 20
    0040961cmov eax, ecx
    0040961ecdq
    0040961fidiv r8l
    00409622cmp edx, 19
    00409625jne 0x409633
    00409627mov ecx, 1
    0040962ccall Sleep
    00409631jmp 0x409664
    00409633
    00409633loc_409633:
    00409633mov r8l, 5
    00409639mov eax, ecx
    0040963bcdq
    0040963cidiv r8l
    0040963fcmp edx, 4
    00409642jne 0x40964d
    00409644xor ecx, ecx
    00409646call Sleep
    0040964bjmp 0x409664
    0040964d
    0040964dloc_40964d:
    0040964dcall SwitchToThread
    00409652jmp 0x409664
    00409654
    00409654loc_409654:
    00409654mov edx, 4
    00409659mov ecx, eax
    0040965bshl edx, cl
    0040965dmov ecx, edx
    0040965fcall fn_4096d0
    00409664
    00409664loc_409664:
    00409664add [rbx], 1
    00409667cmp [rbx], 0
    0040966ajge 0x409672
    0040966cmov [rbx], 10
    00409672
    00409672loc_409672:
    00409672add rsp, 32
    00409676pop rbx
    00409677ret
    004095f0
    00409678
    00409678 // align 0x10
    00409680
    00409680fn_409680:
    00409680push rbp
    00409681push rbx
    00409682sub rsp, 56
    00409686mov rbp, rsp
    00409689mov rbx, rcx
    0040968cmov [rbp+44], 0
    00409693
    00409693loc_409693:
    00409693mov ecx, [rbx]
    00409695test ecx, ecx
    00409697jne 0x4096a8
    00409699mov eax, ecx
    0040969bmov edx, 1
    004096a0lock cmpxchg [rbx], edx
    004096a4cmp eax, ecx
    004096a6je 0x4096b3
    004096a8
    004096a8loc_4096a8:
    004096a8lea rcx, [rbp+44]
    004096accall fn_4095f0
    004096b1jmp 0x409693
    004096b3
    004096b3loc_4096b3:
    004096b3lea rsp, [rbp+56]
    004096b7pop rbx
    004096b8pop rbp
    004096b9ret
    00409680
    004096ba
    004096ba // align 0x10
    004096c0
    004096c0fn_4096c0:
    004096c0xor eax, eax
    004096c2lock xchg [rcx], eax
    004096c5ret
    004096c0
    004096c6
    004096c6 // align 0x10
    004096d0
    004096d0fn_4096d0:
    004096d0cmp ecx, 0
    004096d3jle 0x4096de
    004096d5
    004096d5loc_4096d5:
    004096d5nop
    004096d7dec ecx
    004096d9cmp ecx, 0
    004096dcjg 0x4096d5
    004096de
    004096deloc_4096de:
    004096deret
    004096d0
    004096df
    004096df // align 0x10
    004096e0
    004096e0fn_4096e0:
    004096e0push rbp
    004096e1sub rsp, 80
    004096e5mov rbp, rsp
    004096e8mov [rbp+40], rbp
    004096ecmov [rbp+52], 0
    004096f3lea rcx, [rip+222]
    004096facall GetModuleHandleW
    004096ffmov rcx, rax
    00409702lea rdx, [rip+233]
    00409709call GetProcAddress
    0040970etest rax, rax
    00409711je 0x4097a3
    00409717xor ecx, ecx
    00409719lea rdx, [rbp+52]
    0040971dcall GetLogicalProcessorInformation
    00409722test eax, eax
    00409724jne 0x4097a3
    00409726call GetLastError
    0040972bcmp eax, 122
    0040972ejne 0x4097a3
    00409730mov ecx, [rbp+52]
    00409733call fn_405700
    00409738mov [rbp+72], rax
    0040973cnop
    0040973dmov rcx, [rbp+72]
    00409741lea rdx, [rbp+52]
    00409745call GetLogicalProcessorInformation
    0040974amov rax, [rbp+72]
    0040974emov [rbp+56], rax
    00409752cmp [rbp+52], 0
    00409756jbe 0x409789
    00409758
    00409758loc_409758:
    00409758mov rax, [rbp+56]
    0040975ccmp [rax+8], 2
    00409761jne 0x40977a
    00409763mov rax, [rbp+56]
    00409767cmp [rax+16], 1
    0040976bjne 0x40977a
    0040976dmov rax, [rbp+56]
    00409771movzx eax, [rax+18]
    00409775mov [rbp+68], eax
    00409778jmp 0x409796
    0040977a
    0040977aloc_40977a:
    0040977aadd [rbp+56], 32
    0040977fsub [rbp+52], 32
    00409783cmp [rbp+52], 0
    00409787ja 0x409758
    00409789
    00409789loc_409789:
    00409789nop
    0040978anop
    0040978bmov rcx, [rbp+72]
    0040978fcall fn_405730
    00409794jmp 0x4097a3
    00409796
    00409796loc_409796:
    00409796xor ecx, ecx
    00409798mov rdx, [rbp+40]
    0040979ccall fn_4097c0
    004097a1jmp 0x4097aa
    004097a3
    004097a3loc_4097a3:
    004097a3mov [rbp+68], 64
    004097aa
    004097aaloc_4097aa:
    004097aamov eax, [rbp+68]
    004097adlea rsp, [rbp+80]
    004097b1pop rbp
    004097b2ret
    004096e0
    004097b3
    004097b3 48 8d 44 20 00 48 8d 04 05 00 00 00 00 H.D .H.......
    004097c0
    004097c0fn_4097c0:
    004097c0push rbp
    004097c1sub rsp, 32
    004097c5mov rbp, rsp
    004097c8mov rcx, [rdx+72]
    004097cccall fn_405730
    004097d1lea rsp, [rbp+32]
    004097d5pop rbp
    004097d6ret
    004097c0
    004097d7
    004097d7 00 6b 00 65 00 72 00 6e 00 .k.e.r.n.
    004097e0 65 00 6c 00 33 00 32 00 2e 00 64 00 6c 00 6c 00 e.l.3.2...d.l.l.
    004097f0 00 00 47 65 74 4c 6f 67 69 63 61 6c 50 72 6f 63 ..GetLogicalProc
    00409800 65 73 73 6f 72 49 6e 66 6f 72 6d 61 74 69 6f 6e essorInformation
    00409810 00 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc ................
    00409820
    00409820fn_409820:
    00409820push rbx
    00409821sub rsp, 32
    00409825mov ebx, [rcx+8]
    00409828call GetCurrentThreadId
    0040982dcmp ebx, eax
    0040982fje 0x409838
    00409831mov cl, 25
    00409833call fn_405a20
    00409838
    00409838loc_409838:
    00409838mov eax, ebx
    0040983aadd rsp, 32
    0040983epop rbx
    0040983fret
    00409820
    00409840
    00409840fn_409840:
    00409840sub rsp, 40
    00409844cmp [rip+0x5b7b5], 0
    0040984bjne 0x409859
    0040984dcall fn_4096e0
    00409852lock xchg [rip+0x5b7a7], eax
    00409859
    00409859loc_409859:
    00409859cmp [rip+0x5b840], 1
    00409860jle 0x409877
    00409862cmp [rip+0x5b79b], 0
    00409869jne 0x409877
    0040986bmov eax, 1000
    00409870lock xchg [rip+0x5b78d], eax
    00409877
    00409877loc_409877:
    00409877cmp [rip+0x5b782], 48
    0040987ejle 0x40988e
    00409880movsxd rcx, [rip+0x5b779]
    00409887call fn_4046b0
    0040988cjmp 0x409898
    0040988e
    0040988eloc_40988e:
    0040988emov ecx, 48
    00409893call fn_4046b0
    00409898
    00409898loc_409898:
    00409898mov ecx, [rip+0x5b766]
    0040989emov [rax+24], ecx
    004098a1add rsp, 40
    004098a5ret
    00409840
    004098a6
    004098a6 // align 0x10
    004098b0
    004098b0fn_4098b0:
    004098b0sub rsp, 40
    004098b4call fn_409d30
    004098b9mov rcx, [rax]
    004098bcand rcx, -2
    004098c0test rcx, rcx
    004098c3je 0x4098d1
    004098c5mov [rax], 0
    004098cccall fn_4098e0
    004098d1
    004098d1loc_4098d1:
    004098d1add rsp, 40
    004098d5ret
    004098b0
    004098d6
    004098d6 // align 0x10
    004098e0
    004098e0fn_4098e0:
    004098e0push rsi
    004098e1push rbx
    004098e2sub rsp, 40
    004098e6mov rbx, rcx
    004098e9cmp [rip+0x5c09f], 0
    004098f1je 0x409908
    004098f3cmp [rbx+16], 0
    004098f8je 0x409908
    004098famov rcx, [rbx+16]
    004098femov rsi, [rip+0x5c08b]
    00409905call [rsi+8]
    00409908
    00409908loc_409908:
    00409908mov rcx, rbx
    0040990bcall fn_404120
    00409910add rsp, 40
    00409914pop rbx
    00409915pop rsi
    00409916ret
    004098e0
    00409917
    00409917 // align 0x10
    00409920
    00409920fn_409920:
    00409920push rbx
    00409921sub rsp, 32
    00409925mov rbx, rcx
    00409928cmp [rip+0x5c060], 0
    00409930jne 0x409939
    00409932mov cl, 26
    00409934call fn_405a20
    00409939
    00409939loc_409939:
    00409939mov rcx, rbx
    0040993ccall fn_409d40
    00409941mov rcx, rax
    00409944or edx, -1
    00409947call fn_409a50
    0040994cadd rsp, 32
    00409950pop rbx
    00409951ret
    00409920
    00409952
    00409952 // align 0x10
    00409960
    00409960fn_409960:
    00409960push rsi
    00409961push rbx
    00409962sub rsp, 40
    00409966mov rbx, rcx
    00409969mov esi, edx
    0040996bcmp [rip+0x5c01d], 0
    00409973jne 0x40997c
    00409975mov cl, 26
    00409977call fn_405a20
    0040997c
    0040997cloc_40997c:
    0040997cmov rcx, rbx
    0040997fcall fn_409d40
    00409984mov rcx, rax
    00409987mov edx, esi
    00409989call fn_409a50
    0040998eadd rsp, 40
    00409992pop rbx
    00409993pop rsi
    00409994ret
    00409960
    00409995
    00409995 // align 0x10
    004099a0
    004099a0fn_4099a0:
    004099a0push rbp
    004099a1sub rsp, 64
    004099a5mov rbp, rsp
    004099a8mov [rbp+40], rbp
    004099acmov [rbp+80], rcx
    004099b0mov rax, [rbp+80]
    004099b4lea rcx, [rax+40]
    004099b8call fn_409680
    004099bdnop
    004099bemov rax, [rbp+80]
    004099c2mov rax, [rax+32]
    004099c6mov [rbp+56], rax
    004099cacmp [rbp+56], 0
    004099cfje 0x4099de
    004099d1mov rax, [rbp+56]
    004099d5mov rax, [rax]
    004099d8cmp rax, [rbp+56]
    004099dcjne 0x4099ec
    004099de
    004099deloc_4099de:
    004099demov rax, [rbp+80]
    004099e2mov [rax+32], 0
    004099eajmp 0x409a11
    004099ec
    004099ecloc_4099ec:
    004099ecmov rax, [rbp+80]
    004099f0mov rcx, [rax+32]
    004099f4mov rax, [rcx]
    004099f7mov [rbp+56], rax
    004099fbmov rax, [rax]
    004099femov [rcx], rax
    00409a01nop
    00409a02mov rax, [rbp+80]
    00409a06lea rcx, [rax+40]
    00409a0acall fn_4096c0
    00409a0fjmp 0x409a1c
    00409a11
    00409a11loc_409a11:
    00409a11xor ecx, ecx
    00409a13mov rdx, [rbp+40]
    00409a17call fn_409a30
    00409a1c
    00409a1cloc_409a1c:
    00409a1cmov rax, [rbp+56]
    00409a20lea rsp, [rbp+64]
    00409a24pop rbp
    00409a25ret
    004099a0
    00409a26
    00409a26 48 90 48 8d 04 05 00 00 00 00 H.H.......
    00409a30
    00409a30fn_409a30:
    00409a30push rbp
    00409a31sub rsp, 32
    00409a35mov rbp, rsp
    00409a38mov rax, [rdx+80]
    00409a3clea rcx, [rax+40]
    00409a40call fn_4096c0
    00409a45lea rsp, [rbp+32]
    00409a49pop rbp
    00409a4aret
    00409a30
    00409a4b
    00409a4b // align 0x10
    00409a50
    00409a50fn_409a50:
    00409a50push rbp
    00409a51push r14
    00409a53push r13
    00409a55push rdi
    00409a56push rsi
    00409a57push rbx
    00409a58sub rsp, 72
    00409a5cmov rbp, rsp
    00409a5fmov [rbp+40], rcx
    00409a63mov ebx, edx
    00409a65mov rax, [rbp+40]
    00409a69mov r13l, [rax+24]
    00409a6d
    00409a6dloc_409a6d:
    00409a6dmov rcx, [rbp+40]
    00409a71call fn_40a0a0
    00409a76mov esi, eax
    00409a79test sil, sil
    00409a7cjne 0x409c05
    00409a82test ebx, ebx
    00409a84je 0x409c05
    00409a8axor edi, edi
    00409a8dtest r13l, r13l
    00409a90jle 0x409b31
    00409a96call GetTickCount
    00409a9bmov r14l, eax
    00409a9emov [rbp+60], 0
    00409aa5test r13l, r13l
    00409aa8jle 0x409b15
    00409aaa
    00409aaaloc_409aaa:
    00409aaacmp ebx, -1
    00409aadje 0x409ac3
    00409aafcall GetTickCount
    00409ab4sub eax, r14l
    00409ab7cmp eax, ebx
    00409ab9jb 0x409ac3
    00409abbxor esi, esi
    00409abejmp 0x409c05
    00409ac3
    00409ac3loc_409ac3:
    00409ac3mov rax, [rbp+40]
    00409ac7cmp [rax], 1
    00409acajg 0x409b15
    00409accmov rax, [rbp+40]
    00409ad0cmp [rax], 0
    00409ad3jne 0x409b03
    00409ad5xor eax, eax
    00409ad7mov ecx, 1
    00409adcmov rdx, [rbp+40]
    00409ae0lock cmpxchg [rdx], ecx
    00409ae4test eax, eax
    00409ae6jne 0x409b03
    00409ae8call GetCurrentThreadId
    00409aedmov rcx, [rbp+40]
    00409af1mov [rcx+8], eax
    00409af4mov [rcx+4], 1
    00409afbmov sil, 1
    00409afejmp 0x409c05
    00409b03
    00409b03loc_409b03:
    00409b03lea rcx, [rbp+60]
    00409b07call fn_4095f0
    00409b0csub r13l, 1
    00409b10test r13l, r13l
    00409b13jg 0x409aaa
    00409b15
    00409b15loc_409b15:
    00409b15nop
    00409b16cmp ebx, -1
    00409b19je 0x409b31
    00409b1bcall GetTickCount
    00409b20sub eax, r14l
    00409b23cmp eax, ebx
    00409b25jb 0x409b2f
    00409b27xor esi, esi
    00409b2ajmp 0x409c05
    00409b2f
    00409b2floc_409b2f:
    00409b2fsub ebx, eax
    00409b31
    00409b31loc_409b31:
    00409b31mov rax, [rbp+40]
    00409b35mov ecx, [rax]
    00409b37test ecx, ecx
    00409b39je 0x409a6d
    00409b3fmov edx, ecx
    00409b41add edx, 2
    00409b44mov eax, ecx
    00409b46mov r8, [rbp+40]
    00409b4alock cmpxchg [r8], edx
    00409b4fcmp eax, ecx
    00409b51jne 0x409b31
    00409b53nop
    00409b54
    00409b54loc_409b54:
    00409b54call GetTickCount
    00409b59mov r14l, eax
    00409b5cmov rcx, [rbp+40]
    00409b60call fn_409cb0
    00409b65xor ecx, ecx
    00409b67mov rdx, rax
    00409b6amov r8l, ebx
    00409b6dmov rax, [rip+0x5be1c]
    00409b74call [rax+32]
    00409b77test eax, eax
    00409b79sete sil
    00409b7dcmp ebx, -1
    00409b80je 0x409b94
    00409b82call GetTickCount
    00409b87sub eax, r14l
    00409b8acmp eax, ebx
    00409b8cjae 0x409b92
    00409b8esub ebx, eax
    00409b90jmp 0x409b94
    00409b92
    00409b92loc_409b92:
    00409b92xor ebx, ebx
    00409b94
    00409b94loc_409b94:
    00409b94test sil, sil
    00409b97je 0x409bc6
    00409b99
    00409b99loc_409b99:
    00409b99mov rax, [rbp+40]
    00409b9dmov ecx, [rax]
    00409b9fmov eax, ecx
    00409ba1test eax, 1
    00409ba7jne 0x409bc3
    00409ba9mov edx, ecx
    00409babsub edx, 2
    00409baeor edx, 1
    00409bb1mov eax, ecx
    00409bb3mov r8, [rbp+40]
    00409bb7lock cmpxchg [r8], edx
    00409bbccmp eax, ecx
    00409bbejne 0x409b99
    00409bc0mov dil, 1
    00409bc3
    00409bc3loc_409bc3:
    00409bc3nop
    00409bc4jmp 0x409be3
    00409bc6
    00409bc6loc_409bc6:
    00409bc6mov rax, [rbp+40]
    00409bcamov ecx, [rax]
    00409bccmov edx, ecx
    00409bcesub edx, 2
    00409bd1mov eax, ecx
    00409bd3mov r8, [rbp+40]
    00409bd7lock cmpxchg [r8], edx
    00409bdccmp eax, ecx
    00409bdejne 0x409bc6
    00409be0mov dil, 1
    00409be3
    00409be3loc_409be3:
    00409be3test dil, dil
    00409be6je 0x409b54
    00409becnop
    00409bedtest sil, sil
    00409bf0je 0x409c05
    00409bf2call GetCurrentThreadId
    00409bf7mov rcx, [rbp+40]
    00409bfbmov [rcx+8], eax
    00409bfemov [rcx+4], 1
    00409c05
    00409c05loc_409c05:
    00409c05mov eax, esi
    00409c08lea rsp, [rbp+72]
    00409c0cpop rbx
    00409c0dpop rsi
    00409c0epop rdi
    00409c0fpop r13
    00409c11pop r14
    00409c13pop rbp
    00409c14ret
    00409a50
    00409c15
    00409c15 // align 0x10
    00409c20
    00409c20fn_409c20:
    00409c20push rbx
    00409c21sub rsp, 32
    00409c25mov rbx, rcx
    00409c28mov rcx, rbx
    00409c2bcall fn_409820
    00409c30lea rax, [rbx+4]
    00409c34sub [rax], 1
    00409c37cmp [rbx+4], 0
    00409c3bjne 0x409c78
    00409c3dmov [rbx+8], 0
    00409c44
    00409c44loc_409c44:
    00409c44mov ecx, [rbx]
    00409c46mov edx, ecx
    00409c48sub edx, 1
    00409c4bmov eax, ecx
    00409c4dlock cmpxchg [rbx], edx
    00409c51cmp eax, ecx
    00409c53jne 0x409c44
    00409c55test ecx, -2
    00409c5bje 0x409c77
    00409c5dmov rcx, rbx
    00409c60call fn_409cb0
    00409c65mov rcx, rax
    00409c68xor edx, edx
    00409c6axor r8, r8
    00409c6dmov rax, [rip+0x5bd1c]
    00409c74call [rax+32]
    00409c77
    00409c77loc_409c77:
    00409c77nop
    00409c78
    00409c78loc_409c78:
    00409c78add rsp, 32
    00409c7cpop rbx
    00409c7dret
    00409c20
    00409c7e
    00409c7e // align 0x10
    00409c80
    00409c80fn_409c80:
    00409c80push rbx
    00409c81sub rsp, 32
    00409c85mov rbx, rcx
    00409c88cmp [rip+0x5bd00], 0
    00409c90jne 0x409c99
    00409c92mov cl, 26
    00409c94call fn_405a20
    00409c99
    00409c99loc_409c99:
    00409c99mov rcx, rbx
    00409c9ccall fn_409d40
    00409ca1mov rcx, rax
    00409ca4call fn_409c20
    00409ca9add rsp, 32
    00409cadpop rbx
    00409caeret
    00409c80
    00409caf
    00409caf // align 0x10
    00409cb0
    00409cb0fn_409cb0:
    00409cb0push r13
    00409cb2push rdi
    00409cb3push rsi
    00409cb4push rbx
    00409cb5sub rsp, 40
    00409cb9mov rbx, rcx
    00409cbcmov edi, 1
    00409cc1mov rsi, [rbx+16]
    00409cc5test rsi, rsi
    00409cc8jne 0x409d1d
    00409cca
    00409ccaloc_409cca:
    00409ccamov rax, [rip+0x5bcbf]
    00409cd1call [rax]
    00409cd3mov rcx, rax
    00409cd6xor eax, eax
    00409cd8mov rdx, rcx
    00409cdblock cmpxchg [rbx+16], rdx
    00409ce1mov rsi, rax
    00409ce4test rsi, rsi
    00409ce7jne 0x409cee
    00409ce9mov rsi, rcx
    00409cecjmp 0x409cfe
    00409cee
    00409ceeloc_409cee:
    00409ceetest rcx, rcx
    00409cf1je 0x409cfe
    00409cf3mov r13, [rip+0x5bc96]
    00409cfacall [r13+8]
    00409cfe
    00409cfeloc_409cfe:
    00409cfetest rsi, rsi
    00409d01jne 0x409d1d
    00409d03mov ecx, edi
    00409d05call Sleep
    00409d0acmp edi, 512
    00409d10jle 0x409d19
    00409d12mov edi, 1
    00409d17jmp 0x409cca
    00409d19
    00409d19loc_409d19:
    00409d19add edi, edi
    00409d1bjmp 0x409cca
    00409d1d
    00409d1dloc_409d1d:
    00409d1dmov rax, rsi
    00409d20add rsp, 40
    00409d24pop rbx
    00409d25pop rsi
    00409d26pop rdi
    00409d27pop r13
    00409d29ret
    00409cb0
    00409d2a
    00409d2a // align 0x10
    00409d30
    00409d30fn_409d30:
    00409d30mov rax, [rcx]
    00409d33movsxd rax, [rax-128]
    00409d37lea rax, [rcx+rax-8]
    00409d3cret
    00409d30
    00409d3d
    00409d3d // align 0x10
    00409d40
    00409d40fn_409d40:
    00409d40push rbp
    00409d41push rsi
    00409d42push rbx
    00409d43sub rsp, 48
    00409d47mov rbp, rsp
    00409d4amov rax, [rcx]
    00409d4dmovsxd rax, [rax-128]
    00409d51lea rsi, [rcx+rax-8]
    00409d56mov rax, [rsi]
    00409d59mov [rbp+40], rax
    00409d5dmov rbx, [rbp+40]
    00409d61and rbx, -2
    00409d65test rbx, rbx
    00409d68jne 0x409da7
    00409d6acall fn_409840
    00409d6fmov rcx, rax
    00409d72
    00409d72loc_409d72:
    00409d72mov rax, [rbp+40]
    00409d76and rax, 1
    00409d7amov rdx, rcx
    00409d7dor rdx, rax
    00409d80mov rax, [rbp+40]
    00409d84lock cmpxchg [rsi], rdx
    00409d89mov rax, [rsi]
    00409d8cmov [rbp+40], rax
    00409d90mov rbx, [rbp+40]
    00409d94and rbx, -2
    00409d98test rbx, rbx
    00409d9bje 0x409d72
    00409d9dcmp rbx, rcx
    00409da0je 0x409da7
    00409da2call fn_404120
    00409da7
    00409da7loc_409da7:
    00409da7mov rax, rbx
    00409daalea rsp, [rbp+48]
    00409daepop rbx
    00409dafpop rsi
    00409db0pop rbp
    00409db1ret
    00409d40
    00409db2
    00409db2 // align 0x10
    00409dc0
    00409dc0fn_409dc0:
    00409dc0sub rsp, 40
    00409dc4call fn_4099a0
    00409dc9test rax, rax
    00409dccje 0x409de1
    00409dcemov rcx, [rax+16]
    00409dd2xor edx, edx
    00409dd4xor r8, r8
    00409dd7mov rax, [rip+0x5bbb2]
    00409ddecall [rax+32]
    00409de1
    00409de1loc_409de1:
    00409de1add rsp, 40
    00409de5ret
    00409dc0
    00409de6
    00409de6 // align 0x10
    00409df0
    00409df0fn_409df0:
    00409df0push rbx
    00409df1sub rsp, 32
    00409df5mov rbx, rcx
    00409df8cmp [rip+0x5bb90], 0
    00409e00jne 0x409e09
    00409e02mov cl, 26
    00409e04call fn_405a20
    00409e09
    00409e09loc_409e09:
    00409e09mov rcx, rbx
    00409e0ccall fn_409d40
    00409e11mov rcx, rax
    00409e14call fn_409dc0
    00409e19add rsp, 32
    00409e1dpop rbx
    00409e1eret
    00409df0
    00409e1f
    00409e1f // align 0x10
    00409e20
    00409e20fn_409e20:
    00409e20push rbx
    00409e21sub rsp, 32
    00409e25mov rbx, rcx
    00409e28mov rcx, rbx
    00409e2bcall fn_4099a0
    00409e30test rax, rax
    00409e33je 0x409e55
    00409e35
    00409e35loc_409e35:
    00409e35mov rcx, [rax+16]
    00409e39xor edx, edx
    00409e3bxor r8, r8
    00409e3emov rax, [rip+0x5bb4b]
    00409e45call [rax+32]
    00409e48mov rcx, rbx
    00409e4bcall fn_4099a0
    00409e50test rax, rax
    00409e53jne 0x409e35
    00409e55
    00409e55loc_409e55:
    00409e55nop
    00409e56add rsp, 32
    00409e5apop rbx
    00409e5bret
    00409e20
    00409e5c
    00409e5c // align 0x10
    00409e60
    00409e60fn_409e60:
    00409e60push rbx
    00409e61sub rsp, 32
    00409e65mov rbx, rcx
    00409e68cmp [rip+0x5bb20], 0
    00409e70jne 0x409e79
    00409e72mov cl, 26
    00409e74call fn_405a20
    00409e79
    00409e79loc_409e79:
    00409e79mov rcx, rbx
    00409e7ccall fn_409d40
    00409e81mov rcx, rax
    00409e84call fn_409e20
    00409e89add rsp, 32
    00409e8dpop rbx
    00409e8eret
    00409e60
    00409e8f
    00409e8f // align 0x10
    00409e90
    00409e90fn_409e90:
    00409e90push rbp
    00409e91sub rsp, 48
    00409e95mov rbp, rsp
    00409e98mov [rbp+40], rbp
    00409e9cmov [rbp+64], rcx
    00409ea0mov [rbp+72], rdx
    00409ea4mov rax, [rbp+64]
    00409ea8lea rcx, [rax+40]
    00409eaccall fn_409680
    00409eb1nop
    00409eb2mov rax, [rbp+64]
    00409eb6mov rax, [rax+32]
    00409ebatest rax, rax
    00409ebdjne 0x409ed8
    00409ebfmov rax, [rbp+64]
    00409ec3mov rcx, [rbp+72]
    00409ec7mov [rax+32], rcx
    00409ecbmov rax, [rbp+72]
    00409ecfmov rcx, [rbp+72]
    00409ed3mov [rax], rcx
    00409ed6jmp 0x409efd
    00409ed8
    00409ed8loc_409ed8:
    00409ed8mov rcx, [rbp+72]
    00409edcmov rax, [rax]
    00409edfmov [rcx], rax
    00409ee2mov rax, [rbp+64]
    00409ee6mov rax, [rax+32]
    00409eeamov rcx, [rbp+72]
    00409eeemov [rax], rcx
    00409ef1mov rax, [rbp+64]
    00409ef5mov rcx, [rbp+72]
    00409ef9mov [rax+32], rcx
    00409efd
    00409efdloc_409efd:
    00409efdnop
    00409efemov rax, [rbp+64]
    00409f02lea rcx, [rax+40]
    00409f06call fn_4096c0
    00409f0blea rsp, [rbp+48]
    00409f0fpop rbp
    00409f10ret
    00409e90
    00409f11
    00409f11 48 8d 80 00 00 00 00 48 8d 04 05 00 00 00 00 H......H.......
    00409f20
    00409f20fn_409f20:
    00409f20push rbp
    00409f21sub rsp, 32
    00409f25mov rbp, rsp
    00409f28mov rax, [rdx+64]
    00409f2clea rcx, [rax+40]
    00409f30call fn_4096c0
    00409f35lea rsp, [rbp+32]
    00409f39pop rbp
    00409f3aret
    00409f20
    00409f3b
    00409f3b // align 0x10
    00409f40
    00409f40fn_409f40:
    00409f40push rbp
    00409f41sub rsp, 64
    00409f45mov rbp, rsp
    00409f48mov [rbp+40], rbp
    00409f4cmov [rbp+80], rcx
    00409f50mov [rbp+88], rdx
    00409f54mov rax, [rbp+80]
    00409f58cmp [rax+32], 0
    00409f5dje 0x40a01f
    00409f63mov rax, [rbp+80]
    00409f67lea rcx, [rax+40]
    00409f6bcall fn_409680
    00409f70nop
    00409f71mov rax, [rbp+80]
    00409f75mov rax, [rax+32]
    00409f79test rax, rax
    00409f7cje 0x40a011
    00409f82mov [rbp+56], rax
    00409f86mov rax, [rbp+56]
    00409f8amov rax, [rax]
    00409f8dmov [rbp+48], rax
    00409f91jmp 0x409fc0
    00409f93
    00409f93loc_409f93:
    00409f93mov rax, [rbp+48]
    00409f97cmp rax, [rbp+88]
    00409f9bjne 0x409fad
    00409f9dmov rax, [rbp+56]
    00409fa1mov rcx, [rbp+48]
    00409fa5mov rcx, [rcx]
    00409fa8mov [rax], rcx
    00409fabjmp 0x409fce
    00409fad
    00409fadloc_409fad:
    00409fadmov rax, [rbp+48]
    00409fb1mov [rbp+56], rax
    00409fb5mov rax, [rbp+48]
    00409fb9mov rax, [rax]
    00409fbcmov [rbp+48], rax
    00409fc0
    00409fc0loc_409fc0:
    00409fc0mov rax, [rbp+80]
    00409fc4mov rcx, [rbp+48]
    00409fc8cmp rcx, [rax+32]
    00409fccjne 0x409f93
    00409fce
    00409fceloc_409fce:
    00409fcenop
    00409fcfmov rax, [rbp+80]
    00409fd3mov rcx, [rbp+48]
    00409fd7cmp rcx, [rax+32]
    00409fdbjne 0x40a011
    00409fddmov rax, [rbp+48]
    00409fe1cmp rax, [rbp+88]
    00409fe5jne 0x40a011
    00409fe7mov rax, [rbp+48]
    00409febmov rax, [rax]
    00409feecmp rax, [rbp+48]
    00409ff2jne 0x40a002
    00409ff4mov rax, [rbp+80]
    00409ff8mov [rax+32], 0
    0040a000jmp 0x40a011
    0040a002
    0040a002loc_40a002:
    0040a002mov rcx, [rbp+80]
    0040a006mov [rcx+32], rax
    0040a00amov rcx, [rbp+56]
    0040a00emov [rcx], rax
    0040a011
    0040a011loc_40a011:
    0040a011nop
    0040a012mov rax, [rbp+80]
    0040a016lea rcx, [rax+40]
    0040a01acall fn_4096c0
    0040a01f
    0040a01floc_40a01f:
    0040a01flea rsp, [rbp+64]
    0040a023pop rbp
    0040a024ret
    00409f40
    0040a025
    0040a025 48 8b c0 48 8d 04 05 00 00 00 00 H..H.......
    0040a030
    0040a030fn_40a030:
    0040a030push rbp
    0040a031sub rsp, 32
    0040a035mov rbp, rsp
    0040a038mov rax, [rdx+80]
    0040a03clea rcx, [rax+40]
    0040a040call fn_4096c0
    0040a045lea rsp, [rbp+32]
    0040a049pop rbp
    0040a04aret
    0040a030
    0040a04b
    0040a04b // align 0x10
    0040a050
    0040a050fn_40a050:
    0040a050push rbx
    0040a051sub rsp, 32
    0040a055mov ebx, edx
    0040a057cmp [rip+0x5b042], 1
    0040a05ejle 0x40a069
    0040a060call fn_409d40
    0040a065lock xchg [rax+24], ebx
    0040a069
    0040a069loc_40a069:
    0040a069add rsp, 32
    0040a06dpop rbx
    0040a06eret
    0040a050
    0040a06f
    0040a06f // align 0x10
    0040a070
    0040a070fn_40a070:
    0040a070push rbx
    0040a071sub rsp, 32
    0040a075mov rbx, rcx
    0040a078cmp [rip+0x5b910], 0
    0040a080jne 0x40a089
    0040a082mov cl, 26
    0040a084call fn_405a20
    0040a089
    0040a089loc_40a089:
    0040a089mov rcx, rbx
    0040a08ccall fn_409d40
    0040a091mov rcx, rax
    0040a094call fn_40a0a0
    0040a099add rsp, 32
    0040a09dpop rbx
    0040a09eret
    0040a070
    0040a09f
    0040a09f // align 0x10
    0040a0a0
    0040a0a0fn_40a0a0:
    0040a0a0push rbx
    0040a0a1sub rsp, 32
    0040a0a5mov rbx, rcx
    0040a0a8call GetCurrentThreadId
    0040a0adcmp [rbx+8], eax
    0040a0b0jne 0x40a0bd
    0040a0b2lea rax, [rbx+4]
    0040a0b6add [rax], 1
    0040a0b9mov al, 1
    0040a0bbjmp 0x40a0e6
    0040a0bd
    0040a0bdloc_40a0bd:
    0040a0bdcmp [rbx], 0
    0040a0c0jne 0x40a0e4
    0040a0c2xor eax, eax
    0040a0c4mov ecx, 1
    0040a0c9lock cmpxchg [rbx], ecx
    0040a0cdtest eax, eax
    0040a0cfjne 0x40a0e4
    0040a0d1call GetCurrentThreadId
    0040a0d6mov [rbx+8], eax
    0040a0d9mov [rbx+4], 1
    0040a0e0mov al, 1
    0040a0e2jmp 0x40a0e6
    0040a0e4
    0040a0e4loc_40a0e4:
    0040a0e4xor eax, eax
    0040a0e6
    0040a0e6loc_40a0e6:
    0040a0e6add rsp, 32
    0040a0eapop rbx
    0040a0ebret
    0040a0a0
    0040a0ec
    0040a0ec // align 0x10
    0040a0f0
    0040a0f0fn_40a0f0:
    0040a0f0push rbp
    0040a0f1push rbx
    0040a0f2sub rsp, 88
    0040a0f6mov rbp, rsp
    0040a0f9mov [rbp+40], rbp
    0040a0fdmov [rbp+112], rcx
    0040a101mov [rbp+120], rdx
    0040a105mov [rbp+128], r8l
    0040a10cmov [rbp+56], 0
    0040a114mov rcx, [rbp+120]
    0040a118call fn_409820
    0040a11dmov [rbp+64], eax
    0040a120mov rax, [rip+0x5b869]
    0040a127call [rax+16]
    0040a12amov [rbp+72], rax
    0040a12enop
    0040a12fmov rax, [rbp+120]
    0040a133mov eax, [rax+4]
    0040a136mov [rbp+48], eax
    0040a139mov rcx, [rbp+112]
    0040a13dlea rdx, [rbp+56]
    0040a141call fn_409e90
    0040a146mov rax, [rbp+120]
    0040a14amov [rax+4], 1
    0040a151mov rcx, [rbp+120]
    0040a155call fn_409c20
    0040a15axor ecx, ecx
    0040a15cmov rdx, [rbp+72]
    0040a160mov r8l, [rbp+128]
    0040a167mov rax, [rip+0x5b822]
    0040a16ecall [rax+32]
    0040a171test eax, eax
    0040a173sete al
    0040a176mov [rbp+55], al
    0040a179mov rcx, [rbp+120]
    0040a17dor edx, -1
    0040a180call fn_409a50
    0040a185mov rcx, [rbp+112]
    0040a189lea rdx, [rbp+56]
    0040a18dcall fn_409f40
    0040a192mov rax, [rbp+120]
    0040a196mov ecx, [rbp+48]
    0040a199mov [rax+4], ecx
    0040a19cnop
    0040a19dmov rcx, [rbp+72]
    0040a1a1mov rbx, [rip+0x5b7e8]
    0040a1a8call [rbx+24]
    0040a1abmovzx rax, [rbp+55]
    0040a1b0lea rsp, [rbp+88]
    0040a1b4pop rbx
    0040a1b5pop rbp
    0040a1b6ret
    0040a0f0
    0040a1b7
    0040a1b7 90 48 8d 04 05 00 00 00 00 .H.......
    0040a1c0
    0040a1c0fn_40a1c0:
    0040a1c0push rbp
    0040a1c1push rbx
    0040a1c2sub rsp, 40
    0040a1c6mov rbp, rsp
    0040a1c9mov rcx, [rdx+72]
    0040a1cdmov rbx, [rip+0x5b7bc]
    0040a1d4call [rbx+24]
    0040a1d7lea rsp, [rbp+40]
    0040a1dbpop rbx
    0040a1dcpop rbp
    0040a1ddret
    0040a1c0
    0040a1de
    0040a1de // align 0x10
    0040a1e0
    0040a1e0fn_40a1e0:
    0040a1e0push rsi
    0040a1e1push rbx
    0040a1e2sub rsp, 40
    0040a1e6mov rbx, rcx
    0040a1e9mov esi, edx
    0040a1ebcmp [rip+0x5b79d], 0
    0040a1f3jne 0x40a1fc
    0040a1f5mov cl, 26
    0040a1f7call fn_405a20
    0040a1fc
    0040a1fcloc_40a1fc:
    0040a1fcmov rcx, rbx
    0040a1ffcall fn_409d40
    0040a204mov rcx, rax
    0040a207mov rdx, rax
    0040a20amov r8l, esi
    0040a20dcall fn_40a0f0
    0040a212add rsp, 40
    0040a216pop rbx
    0040a217pop rsi
    0040a218ret
    0040a1e0
    0040a219
    0040a219 // align 0x10
    0040a220
    0040a220fn_40a220:
    0040a220push rdi
    0040a221push rsi
    0040a222push rbx
    0040a223sub rsp, 32
    0040a227mov rbx, rcx
    0040a22amov rsi, rdx
    0040a22dmov edi, r8l
    0040a230cmp [rip+0x5b758], 0
    0040a238jne 0x40a241
    0040a23amov cl, 26
    0040a23ccall fn_405a20
    0040a241
    0040a241loc_40a241:
    0040a241mov rcx, rbx
    0040a244call fn_409d40
    0040a249mov rbx, rax
    0040a24cmov rcx, rsi
    0040a24fcall fn_409d40
    0040a254mov rcx, rbx
    0040a257mov rdx, rax
    0040a25amov r8l, edi
    0040a25dcall fn_40a0f0
    0040a262add rsp, 32
    0040a266pop rbx
    0040a267pop rsi
    0040a268pop rdi
    0040a269ret
    0040a220
    0040a26a
    0040a26a // align 0x10
    0040a270
    0040a270fn_40a270:
    0040a270sub rsp, 40
    0040a274cmp [rip+0x4edbd], 1
    0040a27bjbe 0x40a290
    0040a27dmov ecx, 0xeedfadf
    0040a282xor edx, edx
    0040a284xor r8, r8
    0040a287xor r9, r9
    0040a28acall [rip+0x5ada0]
    0040a290
    0040a290loc_40a290:
    0040a290add rsp, 40
    0040a294ret
    0040a270
    0040a295
    0040a295 // align 0x10
    0040a2a0
    0040a2a0fn_40a2a0:
    0040a2a0push rbp
    0040a2a1sub rsp, 48
    0040a2a5mov rbp, rsp
    0040a2a8cmp [rip+0x4ed89], 0
    0040a2afje 0x40a2d0
    0040a2b1mov [rbp+32], rdx
    0040a2b5mov [rbp+40], rcx
    0040a2b9mov ecx, 0xeedfae4
    0040a2bexor edx, edx
    0040a2c0mov r8l, 2
    0040a2c6lea r9, [rbp+32]
    0040a2cacall [rip+0x5ad60]
    0040a2d0
    0040a2d0loc_40a2d0:
    0040a2d0lea rsp, [rbp+48]
    0040a2d4pop rbp
    0040a2d5ret
    0040a2a0
    0040a2d6
    0040a2d6 // align 0x10
    0040a2e0
    0040a2e0fn_40a2e0:
    0040a2e0sub rsp, 40
    0040a2e4mov [rsp+48], rcx
    0040a2e9mov ecx, 0xeedfae0
    0040a2eexor edx, edx
    0040a2f0mov r8l, 1
    0040a2f6lea r9, [rsp+48]
    0040a2fbcall [rip+0x5ad2f]
    0040a301add rsp, 40
    0040a305ret
    0040a2e0
    0040a306
    0040a306 // align 0x10
    0040a310
    0040a310fn_40a310:
    0040a310sub rsp, 40
    0040a314cmp [rip+0x4ed1d], 1
    0040a31bjbe 0x40a322
    0040a31dcall fn_40a2e0
    0040a322
    0040a322loc_40a322:
    0040a322add rsp, 40
    0040a326ret
    0040a310
    0040a327
    0040a327 // align 0x10
    0040a330
    0040a330fn_40a330:
    0040a330sub rsp, 40
    0040a334cmp [rip+0x4ecfd], 1
    0040a33bjbe 0x40a342
    0040a33dcall fn_40a2e0
    0040a342
    0040a342loc_40a342:
    0040a342add rsp, 40
    0040a346ret
    0040a330
    0040a347
    0040a347 // align 0x10
    0040a350
    0040a350fn_40a350:
    0040a350sub rsp, 40
    0040a354mov [rsp+48], rcx
    0040a359cmp [rip+0x4ecd8], 1
    0040a360jbe 0x40a37a
    0040a362mov ecx, 0xeedfae1
    0040a367xor edx, edx
    0040a369mov r8l, 1
    0040a36flea r9, [rsp+48]
    0040a374call [rip+0x5acb6]
    0040a37a
    0040a37aloc_40a37a:
    0040a37aadd rsp, 40
    0040a37eret
    0040a350
    0040a37f
    0040a37f // align 0x10
    0040a380
    0040a380fn_40a380:
    0040a380sub rsp, 40
    0040a384mov [rsp+48], rcx
    0040a389cmp [rip+0x4eca8], 1
    0040a390jbe 0x40a3aa
    0040a392mov ecx, 0xeedfae2
    0040a397xor edx, edx
    0040a399mov r8l, 1
    0040a39flea r9, [rsp+48]
    0040a3a4call [rip+0x5ac86]
    0040a3aa
    0040a3aaloc_40a3aa:
    0040a3aaadd rsp, 40
    0040a3aeret
    0040a380
    0040a3af
    0040a3af // align 0x10
    0040a3b0
    0040a3b0fn_40a3b0:
    0040a3b0push rbp
    0040a3b1sub rsp, 48
    0040a3b5mov rbp, rsp
    0040a3b8cmp [rip+0x4ec79], 0
    0040a3bfje 0x40a3e0
    0040a3c1mov [rbp+32], rdx
    0040a3c5mov [rbp+40], rcx
    0040a3c9mov ecx, 0xeedfae3
    0040a3cexor edx, edx
    0040a3d0mov r8l, 2
    0040a3d6lea r9, [rbp+32]
    0040a3dacall [rip+0x5ac50]
    0040a3e0
    0040a3e0loc_40a3e0:
    0040a3e0lea rsp, [rbp+48]
    0040a3e4pop rbp
    0040a3e5ret
    0040a3b0
    0040a3e6
    0040a3e6 // align 0x10
    0040a3f0
    0040a3f0fn_40a3f0:
    0040a3f0push r14
    0040a3f2push r13
    0040a3f4push rdi
    0040a3f5push rsi
    0040a3f6push rbx
    0040a3f7sub rsp, 64
    0040a3fbmov [rsp+40], rcx
    0040a400mov [rsp+48], rdx
    0040a405mov [rsp+56], r8
    0040a40axor eax, eax
    0040a40cmov rcx, [rsp+56]
    0040a411mov r14l, [rcx]
    0040a414sub r14l, 1
    0040a418mov edi, eax
    0040a41acmp edi, r14l
    0040a41djg 0x40a4c5
    0040a423sub r14l, eax
    0040a426add r14l, 1
    0040a42a
    0040a42aloc_40a42a:
    0040a42amovsxd rax, edi
    0040a42dmov rcx, [rsp+56]
    0040a432lea rsi, [rcx+8*rax+4]
    0040a437mov rbx, rsi
    0040a43acmp [rsi], 0
    0040a43dje 0x40a4c8
    0040a443mov rax, [rsp+48]
    0040a448test rax, rax
    0040a44bje 0x40a4b5
    0040a44dmov r13, [rsp+48]
    0040a452
    0040a452loc_40a452:
    0040a452mov rax, [rsp+40]
    0040a457mov rax, [rax+8]
    0040a45bmov ecx, [rsi]
    0040a45dmov rax, [rax+rcx]
    0040a461cmp rax, r13
    0040a464je 0x40a4c8
    0040a466mov rcx, r13
    0040a469mov edx, [rax-128]
    0040a46ccmp edx, [rcx-128]
    0040a46fjne 0x40a4a5
    0040a471mov rax, [rax-136]
    0040a478mov rcx, [rcx-136]
    0040a47fmovzx rdx, [rax]
    0040a483cmp dl, [rcx]
    0040a485jne 0x40a4a5
    0040a487lea rdx, [rax+1]
    0040a48blea r8, [rcx+1]
    0040a48fmovzx rax, [rax]
    0040a493mov rcx, rdx
    0040a496mov rdx, r8
    0040a499mov r8, rax
    0040a49ccall fn_40c6b0
    0040a4a1test eax, eax
    0040a4a3je 0x40a4c8
    0040a4a5
    0040a4a5loc_40a4a5:
    0040a4a5mov r13, [r13-120]
    0040a4a9test r13, r13
    0040a4acje 0x40a4b4
    0040a4aemov r13, [r13]
    0040a4b2jmp 0x40a452
    0040a4b4
    0040a4b4loc_40a4b4:
    0040a4b4nop
    0040a4b5
    0040a4b5loc_40a4b5:
    0040a4b5add edi, 1
    0040a4b8sub r14l, 1
    0040a4bctest r14l, r14l
    0040a4bfjne 0x40a42a
    0040a4c5
    0040a4c5loc_40a4c5:
    0040a4c5nop
    0040a4c6xor ebx, ebx
    0040a4c8
    0040a4c8loc_40a4c8:
    0040a4c8mov rax, rbx
    0040a4cbadd rsp, 64
    0040a4cfpop rbx
    0040a4d0pop rsi
    0040a4d1pop rdi
    0040a4d2pop r13
    0040a4d4pop r14
    0040a4d6ret
    0040a3f0
    0040a4d7
    0040a4d7 // align 0x10
    0040a4e0
    0040a4e0fn_40a4e0:
    0040a4e0push rbp
    0040a4e1push rbx
    0040a4e2sub rsp, 296
    0040a4e9mov rbp, rsp
    0040a4ecmov [rbp+56], rbp
    0040a4f0mov [rbp+320], rcx
    0040a4f7mov [rbp+328], rdx
    0040a4femov [rbp+336], r8
    0040a505mov [rbp+344], r9
    0040a50cmov [rbp+244], 1
    0040a516mov rax, [rbp+344]
    0040a51dmov rcx, [rax+56]
    0040a521mov [rbp+144], rcx
    0040a528mov rcx, [rax+8]
    0040a52cmov [rbp+232], rcx
    0040a533mov rcx, [rax]
    0040a536sub rcx, [rbp+232]
    0040a53dmov [rbp+224], rcx
    0040a544mov rcx, [rbp+320]
    0040a54bmov ecx, [rcx+4]
    0040a54etest ecx, 102
    0040a554jne 0x40a8da
    0040a55axor eax, eax
    0040a55cmov rcx, [rbp+144]
    0040a563mov ebx, [rcx]
    0040a565sub ebx, 1
    0040a568mov [rbp+204], eax
    0040a56ecmp [rbp+204], ebx
    0040a574jg 0x40a8d4
    0040a57asub ebx, eax
    0040a57cadd ebx, 1
    0040a57f
    0040a57floc_40a57f:
    0040a57fmov rax, [rbp+144]
    0040a586movsxd rcx, [rbp+204]
    0040a58dadd rcx, rcx
    0040a590lea rax, [rax+8*rcx+4]
    0040a595mov [rbp+256], rax
    0040a59cmov rax, [rbp+256]
    0040a5a3mov eax, [rax]
    0040a5a5cmp [rbp+224], rax
    0040a5acjb 0x40a8c2
    0040a5b2mov rax, [rbp+256]
    0040a5b9mov eax, [rax+4]
    0040a5bccmp [rbp+224], rax
    0040a5c3jae 0x40a8c2
    0040a5c9mov rax, [rbp+256]
    0040a5d0cmp [rax+8], 0
    0040a5d4je 0x40a8c2
    0040a5dacall fn_4085e0
    0040a5dfmov rax, [rbp+256]
    0040a5e6mov eax, [rax+8]
    0040a5e9cmp eax, 2
    0040a5ecjbe 0x40a6b1
    0040a5f2mov rax, [rbp+320]
    0040a5f9cmp [rax], 0xeedfade
    0040a5ffjne 0x40a618
    0040a601mov rax, [rbp+320]
    0040a608mov rax, [rax+40]
    0040a60cmov rax, [rax]
    0040a60fmov [rbp+176], rax
    0040a616jmp 0x40a648
    0040a618
    0040a618loc_40a618:
    0040a618cmp [rip+0x5aa00], 0
    0040a620je 0x40a8c2
    0040a626mov rcx, [rbp+320]
    0040a62dcall [rip+0x5a9ed]
    0040a633mov [rbp+176], rax
    0040a63acmp [rbp+176], 0
    0040a642je 0x40a8c2
    0040a648
    0040a648loc_40a648:
    0040a648mov rax, [rbp+232]
    0040a64fmov rcx, [rbp+256]
    0040a656mov ecx, [rcx+8]
    0040a659lea rax, [rax+rcx]
    0040a65dmov [rbp+152], rax
    0040a664mov rcx, [rbp+344]
    0040a66bmov rdx, [rbp+176]
    0040a672mov r8, [rbp+152]
    0040a679call fn_40a3f0
    0040a67emov [rbp+160], rax
    0040a685cmp [rbp+160], 0
    0040a68dje 0x40a8c2
    0040a693mov rax, [rbp+232]
    0040a69amov rcx, [rbp+160]
    0040a6a1mov ecx, [rcx+4]
    0040a6a4lea rax, [rax+rcx]
    0040a6a8mov [rbp+136], rax
    0040a6afjmp 0x40a6f0
    0040a6b1
    0040a6b1loc_40a6b1:
    0040a6b1cmp eax, 1
    0040a6b4jne 0x40a6d4
    0040a6b6mov rax, [rbp+232]
    0040a6bdmov rcx, [rbp+256]
    0040a6c4mov ecx, [rcx+4]
    0040a6c7lea rax, [rax+rcx]
    0040a6cbmov [rbp+136], rax
    0040a6d2jmp 0x40a6f0
    0040a6d4
    0040a6d4loc_40a6d4:
    0040a6d4mov rax, [rbp+232]
    0040a6dbmov rcx, [rbp+256]
    0040a6e2mov ecx, [rcx+12]
    0040a6e5lea rax, [rax+rcx]
    0040a6e9mov [rbp+136], rax
    0040a6f0
    0040a6f0loc_40a6f0:
    0040a6f0mov rax, [rbp+320]
    0040a6f7cmp [rax], 0xeedfade
    0040a6fdjne 0x40a72c
    0040a6ffmov rax, [rbp+320]
    0040a706mov rax, [rax+40]
    0040a70amov [rbp+184], rax
    0040a711mov rax, [rbp+320]
    0040a718mov rax, [rax+32]
    0040a71cmov [rbp+168], rax
    0040a723mov [rbp+131], 1
    0040a72ajmp 0x40a7a3
    0040a72c
    0040a72cloc_40a72c:
    0040a72ccmp [rip+0x5a8f4], 0
    0040a734je 0x40a8c2
    0040a73amov rcx, [rbp+320]
    0040a741call [rip+0x5a8e1]
    0040a747mov [rbp+184], rax
    0040a74ecmp [rbp+184], 0
    0040a756je 0x40a8c2
    0040a75cmov rax, [rbp+320]
    0040a763mov rax, [rax+16]
    0040a767mov [rbp+168], rax
    0040a76emov [rbp+131], 1
    0040a775mov rax, [rbp+320]
    0040a77cmov eax, [rax]
    0040a77eand eax, -2
    0040a781cmp eax, 0xffffffffe36c6700
    0040a787jne 0x40a7a3
    0040a789mov rcx, [rbp+184]
    0040a790mov rdx, [rbp+336]
    0040a797call fn_40a2a0
    0040a79cmov [rbp+131], 0
    0040a7a3
    0040a7a3loc_40a7a3:
    0040a7a3movzx rax, [rip+0x4e88e]
    0040a7abcmp al, [rbp+131]
    0040a7b1jbe 0x40a7f7
    0040a7b3cmp [rip+0x4e87e], 0
    0040a7baja 0x40a7f7
    0040a7bcmov rax, [rbp+320]
    0040a7c3mov [rbp+208], rax
    0040a7camov rax, [rbp+336]
    0040a7d1mov [rbp+216], rax
    0040a7d8lea rcx, [rbp+208]
    0040a7dfcall UnhandledExceptionFilter
    0040a7e4mov [rbp+132], eax
    0040a7eacmp [rbp+132], 0
    0040a7f1je 0x40a8c2
    0040a7f7
    0040a7f7loc_40a7f7:
    0040a7f7mov rax, [rbp+320]
    0040a7felea rax, [rax+4]
    0040a802or [rax], 2
    0040a805mov rax, [rbp+256]
    0040a80ccmp [rax+8], 2
    0040a810jb 0x40a820
    0040a812call fn_4057e0
    0040a817mov [rbp+272], rax
    0040a81ejmp 0x40a82b
    0040a820
    0040a820loc_40a820:
    0040a820lea rax, [rbp+96]
    0040a824mov [rbp+272], rax
    0040a82b
    0040a82bloc_40a82b:
    0040a82bmov rax, [rbp+272]
    0040a832mov rcx, [rbp+168]
    0040a839mov [rax+8], rcx
    0040a83dmov rax, [rbp+272]
    0040a844mov rcx, [rbp+184]
    0040a84bmov [rax+16], rcx
    0040a84fmov rax, [rbp+272]
    0040a856mov [rbp+80], rax
    0040a85acall fn_414a40
    0040a85flea rcx, [0x208]
    0040a867lea rax, [rax+rcx]
    0040a86bmov [rbp+72], rax
    0040a86fmov rax, [rbp+80]
    0040a873mov rcx, [rbp+72]
    0040a877mov rcx, [rcx]
    0040a87amov [rax], rcx
    0040a87dmov rax, [rbp+72]
    0040a881mov rcx, [rbp+80]
    0040a885mov [rax], rcx
    0040a888mov rax, [rbp+344]
    0040a88fmov rcx, [rbp+328]
    0040a896mov rdx, [rbp+136]
    0040a89dmov r8, [rbp+320]
    0040a8a4mov r9, [rbp+184]
    0040a8abmov r10, [rax+40]
    0040a8afmov [rsp+32], r10
    0040a8b4mov rax, [rax+64]
    0040a8b8mov [rsp+40], rax
    0040a8bdcall RtlUnwindEx
    0040a8c2
    0040a8c2loc_40a8c2:
    0040a8c2add [rbp+204], 1
    0040a8c9sub ebx, 1
    0040a8cctest ebx, ebx
    0040a8cejne 0x40a57f
    0040a8d4
    0040a8d4loc_40a8d4:
    0040a8d4nop
    0040a8d5jmp 0x40adbd
    0040a8da
    0040a8daloc_40a8da:
    0040a8damov rax, [rax+32]
    0040a8desub rax, [rbp+232]
    0040a8e5mov [rbp+192], rax
    0040a8ecxor eax, eax
    0040a8eemov rcx, [rbp+144]
    0040a8f5mov ecx, [rcx]
    0040a8f7sub ecx, 1
    0040a8famov [rbp+52], ecx
    0040a8fdmov [rbp+204], eax
    0040a903mov ecx, [rbp+52]
    0040a906cmp [rbp+204], ecx
    0040a90cjg 0x40adbc
    0040a912mov ecx, [rbp+52]
    0040a915sub ecx, eax
    0040a917add ecx, 1
    0040a91amov [rbp+52], ecx
    0040a91d
    0040a91dloc_40a91d:
    0040a91dmov rax, [rbp+144]
    0040a924movsxd rcx, [rbp+204]
    0040a92badd rcx, rcx
    0040a92elea rax, [rax+8*rcx+4]
    0040a933mov [rbp+256], rax
    0040a93amov rax, [rbp+256]
    0040a941mov eax, [rax]
    0040a943cmp [rbp+224], rax
    0040a94ajb 0x40ada1
    0040a950mov rax, [rbp+256]
    0040a957mov eax, [rax+4]
    0040a95acmp [rbp+224], rax
    0040a961jae 0x40ada1
    0040a967mov rax, [rbp+256]
    0040a96emov eax, [rax]
    0040a970cmp [rbp+192], rax
    0040a977jb 0x40a9a2
    0040a979mov rax, [rbp+256]
    0040a980mov eax, [rax+4]
    0040a983cmp [rbp+192], rax
    0040a98ajae 0x40a9a2
    0040a98cmov rax, [rbp+320]
    0040a993mov eax, [rax+4]
    0040a996test eax, 32
    0040a99cjne 0x40adbd
    0040a9a2
    0040a9a2loc_40a9a2:
    0040a9a2mov rax, [rbp+256]
    0040a9a9mov eax, [rax+8]
    0040a9acmov [rbp+48], eax
    0040a9afcmp eax, 2
    0040a9b2jae 0x40ac52
    0040a9b8call fn_414a40
    0040a9bdmov rax, [rax+520]
    0040a9c4mov [rbp+264], rax
    0040a9cbnop
    0040a9ccmov eax, [rbp+48]
    0040a9cfsub eax, 1
    0040a9d2cmp eax, -1
    0040a9d5je 0x40a9e4
    0040a9d7test eax, eax
    0040a9d9jne 0x40ab5e
    0040a9dfjmp 0x40aa7c
    0040a9e4
    0040a9e4loc_40a9e4:
    0040a9e4mov rbx, [rbp+344]
    0040a9ebmov rax, [rbp+232]
    0040a9f2mov rcx, [rbp+256]
    0040a9f9mov ecx, [rcx+4]
    0040a9fclea rax, [rax+rcx]
    0040aa00mov [rbx], rax
    0040aa03mov rax, [rbp+232]
    0040aa0amov rcx, [rbp+256]
    0040aa11mov ecx, [rcx+12]
    0040aa14lea rax, [rax+rcx]
    0040aa18mov [rbp+136], rax
    0040aa1fmov rcx, [rbp+136]
    0040aa26call fn_40a350
    0040aa2bmov rax, [rbp+320]
    0040aa32mov [rbp+208], rax
    0040aa39mov rax, [rbp+336]
    0040aa40mov [rbp+216], rax
    0040aa47lea rcx, [rbp+208]
    0040aa4emov rdx, [rbp+328]
    0040aa55call [rbp+136]
    0040aa5bcall fn_406080
    0040aa60mov rcx, [rbx+40]
    0040aa64mov [rcx+52], eax
    0040aa67call fn_406020
    0040aa6cmov rcx, [rbx+40]
    0040aa70mov [rcx+256], ax
    0040aa77jmp 0x40ab5e
    0040aa7c
    0040aa7cloc_40aa7c:
    0040aa7cmov rax, [rbp+232]
    0040aa83mov rcx, [rbp+256]
    0040aa8amov ecx, [rcx+12]
    0040aa8dlea rax, [rax+rcx]
    0040aa91mov [rbp+136], rax
    0040aa98mov rax, [rbp+344]
    0040aa9fmov rcx, [rbp+232]
    0040aaa6mov rdx, [rbp+256]
    0040aaadmov edx, [rdx+4]
    0040aab0lea rcx, [rcx+rdx]
    0040aab4mov [rax], rcx
    0040aab7mov rax, [rbp+320]
    0040aabemov [rbp+208], rax
    0040aac5mov rax, [rbp+336]
    0040aaccmov [rbp+216], rax
    0040aad3mov rax, [rbp+264]
    0040aadamov rax, [rax+16]
    0040aademov [rbp+184], rax
    0040aae5mov rax, [rbp+264]
    0040aaecmov rax, [rax+8]
    0040aaf0mov [rbp+168], rax
    0040aaf7lea rcx, [rbp+208]
    0040aafemov rdx, [rbp+328]
    0040ab05mov r8, [rbp+184]
    0040ab0cmov r9, [rbp+168]
    0040ab13call [rbp+136]
    0040ab19mov [rbp+136], rax
    0040ab20mov rax, [rbp+344]
    0040ab27mov rcx, [rbp+136]
    0040ab2emov [rax], rcx
    0040ab31mov rax, [rbp+264]
    0040ab38cmp [rax+16], 0
    0040ab3dje 0x40ab5e
    0040ab3fmov rax, [rbp+264]
    0040ab46mov rcx, [rax+16]
    0040ab4acall TObject.Free
    0040ab4fmov rax, [rbp+264]
    0040ab56mov [rax+16], 0
    0040ab5e
    0040ab5eloc_40ab5e:
    0040ab5enop
    0040ab5fmov [rbp+280], 0
    0040ab6acall fn_414a40
    0040ab6fmov rax, [rax+520]
    0040ab76mov [rbp+272], rax
    0040ab7dcmp [rbp+272], 0
    0040ab85je 0x40ac4c
    0040ab8b
    0040ab8bloc_40ab8b:
    0040ab8bmov rax, [rbp+272]
    0040ab92cmp rax, [rbp+264]
    0040ab99jne 0x40ac1f
    0040ab9fcmp [rbp+280], 0
    0040aba7jne 0x40abba
    0040aba9mov rax, [rbp+256]
    0040abb0cmp [rax+8], 1
    0040abb4jne 0x40ac4c
    0040abba
    0040abbaloc_40abba:
    0040abbacmp [rbp+280], 0
    0040abc2jne 0x40abd6
    0040abc4call fn_414a40
    0040abc9mov [rax+520], 0
    0040abd4jmp 0x40abea
    0040abd6
    0040abd6loc_40abd6:
    0040abd6mov rax, [rbp+280]
    0040abddmov rcx, [rbp+272]
    0040abe4mov rcx, [rcx]
    0040abe7mov [rax], rcx
    0040abea
    0040abealoc_40abea:
    0040abeamov rax, [rbp+272]
    0040abf1mov rax, [rax+16]
    0040abf5test rax, rax
    0040abf8je 0x40ac11
    0040abfamov rcx, rax
    0040abfdcall TObject.Free
    0040ac02mov rax, [rbp+272]
    0040ac09mov [rax+16], 0
    0040ac11
    0040ac11loc_40ac11:
    0040ac11mov rcx, [rbp+272]
    0040ac18call fn_405890
    0040ac1djmp 0x40ac4c
    0040ac1f
    0040ac1floc_40ac1f:
    0040ac1fmov rax, [rbp+272]
    0040ac26mov [rbp+280], rax
    0040ac2dmov rax, [rbp+272]
    0040ac34mov rax, [rax]
    0040ac37mov [rbp+272], rax
    0040ac3ecmp [rbp+272], 0
    0040ac46jne 0x40ab8b
    0040ac4c
    0040ac4cloc_40ac4c:
    0040ac4cnop
    0040ac4djmp 0x40ada1
    0040ac52
    0040ac52loc_40ac52:
    0040ac52mov rax, [rbp+320]
    0040ac59mov eax, [rax+4]
    0040ac5ctest eax, 32
    0040ac62je 0x40ada1
    0040ac68mov [rbp+136], 0
    0040ac73mov eax, [rbp+48]
    0040ac76cmp eax, 2
    0040ac79jne 0x40ac9c
    0040ac7bmov rax, [rbp+232]
    0040ac82mov rcx, [rbp+256]
    0040ac89mov ecx, [rcx+12]
    0040ac8clea rax, [rax+rcx]
    0040ac90mov [rbp+136], rax
    0040ac97jmp 0x40ad5a
    0040ac9c
    0040ac9cloc_40ac9c:
    0040ac9cmov rax, [rbp+320]
    0040aca3cmp [rax], 0xeedfade
    0040aca9jne 0x40acc2
    0040acabmov rax, [rbp+320]
    0040acb2mov rax, [rax+40]
    0040acb6mov rax, [rax]
    0040acb9mov [rbp+176], rax
    0040acc0jmp 0x40aced
    0040acc2
    0040acc2loc_40acc2:
    0040acc2cmp [rip+0x5a356], 0
    0040accaje 0x40ace2
    0040acccmov rcx, [rbp+320]
    0040acd3call [rip+0x5a347]
    0040acd9mov [rbp+176], rax
    0040ace0jmp 0x40aced
    0040ace2
    0040ace2loc_40ace2:
    0040ace2mov [rbp+176], 0
    0040aced
    0040acedloc_40aced:
    0040acedcmp [rbp+176], 0
    0040acf5je 0x40ad5a
    0040acf7mov rax, [rbp+232]
    0040acfemov rcx, [rbp+256]
    0040ad05mov ecx, [rcx+8]
    0040ad08lea rax, [rax+rcx]
    0040ad0cmov [rbp+152], rax
    0040ad13mov rcx, [rbp+344]
    0040ad1amov rdx, [rbp+176]
    0040ad21mov r8, [rbp+152]
    0040ad28call fn_40a3f0
    0040ad2dmov [rbp+160], rax
    0040ad34cmp [rbp+160], 0
    0040ad3cje 0x40ad5a
    0040ad3emov rax, [rbp+232]
    0040ad45mov rcx, [rbp+160]
    0040ad4cmov ecx, [rcx+4]
    0040ad4flea rax, [rax+rcx]
    0040ad53mov [rbp+136], rax
    0040ad5a
    0040ad5aloc_40ad5a:
    0040ad5acmp [rbp+136], 0
    0040ad62je 0x40ada1
    0040ad64mov rax, [rbp+344]
    0040ad6bmov rcx, [rbp+136]
    0040ad72cmp rcx, [rax+32]
    0040ad76jne 0x40ada1
    0040ad78mov rax, [rbp+256]
    0040ad7fcmp [rax+8], 2
    0040ad83jne 0x40ad93
    0040ad85mov rcx, [rbp+136]
    0040ad8ccall fn_40a330
    0040ad91jmp 0x40adbc
    0040ad93
    0040ad93loc_40ad93:
    0040ad93mov rcx, [rbp+136]
    0040ad9acall fn_40a310
    0040ad9fjmp 0x40adbc
    0040ada1
    0040ada1loc_40ada1:
    0040ada1add [rbp+204], 1
    0040ada8mov eax, [rbp+52]
    0040adabsub eax, 1
    0040adaemov [rbp+52], eax
    0040adb1mov eax, [rbp+52]
    0040adb4test eax, eax
    0040adb6jne 0x40a91d
    0040adbc
    0040adbcloc_40adbc:
    0040adbcnop
    0040adbd
    0040adbdloc_40adbd:
    0040adbdmov eax, [rbp+244]
    0040adc3lea rsp, [rbp+296]
    0040adcapop rbx
    0040adcbpop rbp
    0040adccret
    0040a4e0