Function at 0x422690
Capabilities:
Log keystrokes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5f57ec
mov eax, dword fs:[0]
push eax
sub esp, 0x4a8
mov eax, dword [0x65b500]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ecx, dword [ebp + 8]
xor ebx, ebx
mov edx, dword [ebp + 0x14]
cmp ecx, 0x428
ja 0x422aa2
je 0x4229b9
cmp ecx, 0x7e
ja 0x4228c3
je 0x422866
lea eax, [ecx - 3]
cmp eax, 0x47
ja case.0x4231d5.10003
movzx eax, byte [eax + 0x42351c]
jmp dword [eax*4 + 0x423500]
push dword [edi + 4]
cmp word [ebp + 0xc], bx
jne 0x422719
call dword [sym.imp.USER32.dll_HideCaret]
xor ebx, ebx
jmp case.0x4231d5.10003
call dword [sym.imp.USER32.dll_ShowCaret]
mov eax, dword [edi + 0x3f0]
test eax, eax
je case.0x4231d5.10004
mov ecx, dword [edi + 0x46c]
mov eax, dword [ecx]
call dword [eax + 0x13c]
xor ebx, ebx
jmp case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.00429410
jmp 0x4234dc
cmp dword [ebp + 0x10], ebx
je case.0x4231d5.10003
push 0x6682ac
push 0xc
call fcn.004da74a
mov esi, eax
add esp, 8
test esi, esi
je case.0x4231d5.10003
mov eax, dword [ebp + 0x10]
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], ebx
mov ecx, dword [eax]
mov dword [esi], ecx
mov eax, dword [eax + 4]
mov dword [esi + 4], eax
test eax, eax
je 0x4227cc
push 0x6682ac
push eax
call fcn.004da5d2
mov ecx, eax
add esp, 8
mov dword [esi + 8], ecx
test ecx, ecx
jne 0x4227ba
push 0xc
push esi
call fcn.004da0c6
add esp, 8
jmp case.0x4231d5.10003
mov eax, dword [ebp + 0x10]
push dword [esi + 4]
push dword [eax + 8]
push ecx
call fcn.005c4870
add esp, 0xc
push esi
push 0
push 0x1401
mov ecx, edi
call fcn.00468f00
jmp case.0x4231d5.10003
mov ecx, dword [edi + 0x480]
test ecx, ecx
je case.0x4231d5.10004
mov eax, dword [ecx]
push 1
call dword [eax + 0x14]
mov dword [edi + 0x480], ebx
xor ebx, ebx
jmp case.0x4231d5.10003
mov eax, 1
jmp 0x4234e0
mov eax, dword [edi + 0x32c]
xor esi, esi
mov ecx, dword [edi + 0x328]
sub eax, ecx
sar eax, 2
test eax, eax
je case.0x4231d5.10003
mov ecx, dword [ecx + esi*4]
test ecx, ecx
je 0x42284b
call fcn.004d7150
mov eax, dword [edi + 0x3f0]
test eax, eax
je 0x42284b
mov ecx, dword [edi + 0x328]
mov ecx, dword [ecx + esi*4]
call fcn.004d8a60
mov eax, dword [edi + 0x32c]
inc esi
mov ecx, dword [edi + 0x328]
sub eax, ecx
sar eax, 2
cmp esi, eax
jb 0x422827
jmp case.0x4231d5.10003
lea ecx, [edi + 0x30]
call fcn.004632c0
test eax, eax
je case.0x4231d5.10003
push 0x64
lea ecx, [edi + 0x30]
call fcn.00462910
mov ecx, eax
call fcn.004612c0
push 0
push 0
mov esi, eax
call fcn.00461000
push eax
lea ecx, [edi + 0x30]
call fcn.004672c0
push 0x64
lea ecx, [edi + 0x30]
call fcn.00462910
mov ecx, eax
call fcn.004612c0
cmp esi, eax
je 0x4228b7
mov ecx, edi
call fcn.004272e0
mov ecx, edi
call fcn.00468730
jmp case.0x4231d5.10003
cmp ecx, 0x200
ja 0x42292b
je 0x422914
mov eax, ecx
sub eax, 0xa0
je 0x422914
sub eax, 0x71
je 0x4228fc
sub eax, 2
jne case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
mov ecx, edi
push dword [ebp + 0xc]
push 0x113
call fcn.00429880
jmp 0x4234dc
push edx
push dword [ebp + 0x10]
mov ecx, edi
push dword [ebp + 0xc]
push 0x111
call fcn.00426f30
jmp 0x4234dc
mov eax, dword [edi]
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call dword [eax + 0x80]
jmp 0x4234dc
cmp ecx, 0x205
je 0x4229a1
lea eax, [ecx - 0x2a2]
cmp eax, 1
ja case.0x4231d5.10003
mov dword [edx], ebx
mov dword [edi + 0x438], ebx
cmp dword [edi + 0x434], ebx
jne 0x42299a
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x68]
xorps xmm0, xmm0
push eax
push dword [edi + 4]
movups xmmword [ebp - 0x68], xmm0
call dword [sym.imp.USER32.dll_GetWindowRect]
push dword [ebp - 0x410]
lea eax, [ebp - 0x68]
push dword [ebp - 0x414]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x42299a
mov ecx, edi
call fcn.0041e6f0
mov dword [edi + 0x414], eax
xor ebx, ebx
jmp case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
mov ecx, edi
push dword [ebp + 0xc]
push 0x205
call fcn.004288d0
jmp 0x4234dc
mov ecx, 1
lea eax, [edi + 0x3f0]
xchg dword [eax], ecx
push str.loading_image
lea ecx, [edi + 0x30]
call fcn.00462870
mov esi, eax
test esi, esi
je 0x4229ec
mov ecx, esi
call fcn.0047c8c0
mov edx, dword [esi]
mov ecx, esi
push 0
call dword [edx + 0x114]
push str.loading_text
lea ecx, [edi + 0x30]
call fcn.00462870
test eax, eax
je 0x422a09
mov edx, dword [eax]
mov ecx, eax
push 0
call dword [edx + 0x114]
cmp dword [edi + 0x46c], ebx
je 0x422a7a
call fcn.00407ff0
test al, al
jne 0x422a4c
push 0x74
lea eax, [ebp - 0xdc]
push 0
push eax
call fcn.005c5370
mov ecx, dword [edi + 0x46c]
lea eax, [ebp - 0xdc]
add esp, 0xc
mov dword [ebp - 0xd8], 0x4000000
mov dword [ebp - 0x7c], ebx
push eax
call fcn.0046ce80
mov ecx, dword [edi + 0x46c]
push 1
mov eax, dword [ecx]
call dword [eax + 0x12c]
mov ecx, dword [edi + 0x46c]
push 0x60619c
call fcn.0046d640
mov ecx, dword [edi + 0x46c]
mov eax, dword [ecx]
call dword [eax + 0x13c]
push str.search_icon
lea ecx, [edi + 0x30]
call fcn.00462870
test eax, eax
je case.0x4231d5.10004
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx + 0x114]
xor ebx, ebx
jmp case.0x4231d5.10003
cmp ecx, 0x1401
ja 0x4231c6
je 0x4231ae
lea eax, [ecx - 0x429]
cmp eax, 0x11
ja case.0x4231d5.10003
jmp dword [eax*4 + 0x423564]
mov esi, dword [ebp + 0xc]
test esi, esi
jle case.0x4231d5.10004
lea ecx, [ebp - 0x494]
call fcn.00432690
lea eax, [ebp - 0x494]
mov dword [ebp - 4], 0
push eax
push esi
call fcn.00421f90
mov ecx, eax
call fcn.00438600
test eax, eax
je 0x422b3c
push ecx
mov esi, esp
mov dword [ebp - 0x3fc], esi
mov eax, dword [ebp - 0x490]
add eax, 0xfffffff0
push eax
call fcn.00407c20
add esp, 4
add eax, 0x10
mov dword [esi], eax
mov ecx, edi
push dword [edi + 0x460]
call fcn.0042ae00
lea eax, [ebp - 0x494]
mov ecx, edi
push eax
push dword [edi + 0x460]
call fcn.0042af40
lea ecx, [ebp - 0x494]
call fcn.00407b10
xor ebx, ebx
jmp case.0x4231d5.10003
mov esi, dword [ebp + 0xc]
test esi, esi
jle case.0x4231d5.10004
lea ecx, [ebp - 0x4b4]
call fcn.00432800
lea eax, [ebp - 0x4b4]
mov dword [ebp - 4], 1
push eax
push esi
call fcn.00422020
mov ecx, eax
call fcn.00438860
test eax, eax
je 0x422b8d
lea eax, [ebp - 0x4b4]
mov ecx, edi
push eax
call fcn.0042d2a0
lea ecx, [ebp - 0x4b4]
call fcn.0041c390
xor ebx, ebx
jmp case.0x4231d5.10003
mov ecx, edi
call fcn.0042ac70
jmp case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.00428d60
jmp 0x4234dc
mov eax, dword [ebp + 0x10]
xor esi, esi
test eax, eax
je 0x422bf6
lea ecx, [ebp - 0x428]
push ecx
push eax
mov ecx, edi
call fcn.00425dc0
mov esi, eax
test esi, esi
je 0x422bf6
push 0
push 0
push 1
push 0
push str.add_website
call fcn.00421e70
mov ecx, eax
call fcn.00444e70
xor eax, eax
mov ebx, 0x80004005
test esi, esi
cmovne ebx, eax
jmp case.0x4231d5.10003
cmp dword [ebp + 0xc], ebx
je 0x422c13
mov ecx, edi
call fcn.0042c1e0
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x422c49
push 0
push esi
mov ecx, edi
call fcn.004204a0
mov edx, dword [esi]
or eax, 0xffffffff
sub edx, 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422c3e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 4
push esi
call fcn.004da0c6
add esp, 8
xor ebx, ebx
jmp case.0x4231d5.10003
mov ecx, dword [edi + 0x3ec]
test ecx, ecx
je 0x422c66
mov eax, dword [ecx]
push 1
call dword [eax]
mov dword [edi + 0x3ec], ebx
xor ebx, ebx
jmp case.0x4231d5.10003
mov dword [edx], 1
mov eax, dword [edi + 0x410]
sub eax, 0x10
push eax
call fcn.00407c20
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x42c], esi
cmp dword [esi - 0xc], 0
mov dword [ebp - 4], 2
je 0x423422
xor ebx, ebx
push ebx
push str.Halo_Desktop_Wnd_class
call dword [sym.imp.USER32.dll_FindWindowW]
mov edi, eax
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x422d74
push edi
call fcn.00421f00
mov ecx, eax
call fcn.0042fb10
push 2
push 0x13
push 2
lea ecx, [ebp - 0x460]
call fcn.00444ca0
mov ecx, esi
mov byte [ebp - 4], 3
xor eax, eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422cf5
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x28]
call fcn.004167f0
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x460]
call fcn.00444c00
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 3
call fcn.00409b00
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x460]
mov dword [ebp - 0x41c], eax
lea eax, [ebp - 0x41c]
push 8
push eax
mov dword [ebp - 0x418], 0
call fcn.00444bb0
lea eax, [ebp - 0x460]
push eax
call fcn.00421f00
mov ecx, eax
call fcn.0042fe20
lea ecx, [ebp - 0x460]
mov ebx, eax
call fcn.00444d70
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg case.0x4231d5.10003
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp case.0x4231d5.10003
mov dword [edx], 1
mov eax, dword [edi + 0x48c]
sub eax, 0x10
push eax
call fcn.00407c20
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x404], esi
cmp dword [esi - 0xc], 0
mov dword [ebp - 4], 5
je 0x423422
xor ebx, ebx
push ebx
push str.Halo_Desktop_Wnd_class
call dword [sym.imp.USER32.dll_FindWindowW]
mov edi, eax
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x422ea3
push edi
call fcn.00421f00
mov ecx, eax
call fcn.0042fb10
push 2
push 0x14
push 2
lea ecx, [ebp - 0x474]
call fcn.00444ca0
mov ecx, esi
mov byte [ebp - 4], 6
xor eax, eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422e24
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x40]
call fcn.004167f0
lea eax, [ebp - 0x40]
mov byte [ebp - 4], 7
push eax
lea ecx, [ebp - 0x474]
call fcn.00444c00
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 6
call fcn.00409b00
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x474]
mov dword [ebp - 0x424], eax
lea eax, [ebp - 0x424]
push 8
push eax
mov dword [ebp - 0x420], 0
call fcn.00444bb0
lea eax, [ebp - 0x474]
push eax
call fcn.00421f00
mov ecx, eax
call fcn.0042fe20
lea ecx, [ebp - 0x474]
mov ebx, eax
call fcn.00444d70
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg case.0x4231d5.10003
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp case.0x4231d5.10003
push dword [ebp + 0xc]
lea eax, [ebp - 0x408]
mov ecx, edi
push eax
call fcn.00422460
push eax
lea ecx, [edi + 0x4a4]
mov dword [ebp - 4], 8
call fcn.0040fc30
mov edx, dword [ebp - 0x408]
or eax, 0xffffffff
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422f14
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [edi + 4]
call dword [sym.imp.USER32.dll_IsIconic]
test eax, eax
je 0x422f2c
push 9
push dword [edi + 4]
call dword [sym.imp.USER32.dll_ShowWindow]
cmp dword [edi + 0x434], 0
jne 0x422f96
cmp dword [edi + 0x414], 0
je 0x422f96
cmp dword [edi + 0x438], 0
jne 0x422f7b
mov eax, dword [edi + 4]
mov dword [ebp - 0x434], eax
lea eax, [ebp - 0x43c]
push eax
mov dword [ebp - 0x43c], 0x10
mov dword [ebp - 0x438], 0x12
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov dword [edi + 0x438], 1
mov ecx, edi
mov dword [edi + 0x44c], 1
mov dword [edi + 0x414], 0
call fcn.0042abe0
mov ebx, dword [edi + 4]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push 0
push esi
mov dword [ebp - 0x3f8], eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov esi, dword [sym.imp.USER32.dll_AttachThreadInput]
mov edi, eax
push 1
push edi
push dword [ebp - 0x3f8]
call esi
push ebx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push ebx
call dword [sym.imp.USER32.dll_BringWindowToTop]
push 0
push edi
push dword [ebp - 0x3f8]
call esi
xor ebx, ebx
jmp case.0x4231d5.10003
push dword [ebp + 0xc]
lea eax, [ebp - 0x40c]
mov ecx, edi
push eax
call fcn.00422460
push eax
lea ecx, [edi + 0x4a4]
mov dword [ebp - 4], 9
call fcn.0040fc30
mov edx, dword [ebp - 0x40c]
or eax, 0xffffffff
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x423032
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [edi + 4]
mov dword [ebp - 0x3f8], 0
call dword [sym.imp.USER32.dll_IsIconic]
test eax, eax
je 0x42305e
push 9
push dword [edi + 4]
mov dword [ebp - 0x3f8], 1
call dword [sym.imp.USER32.dll_ShowWindow]
cmp dword [edi + 0x434], 0
jne 0x4230d2
cmp dword [edi + 0x414], 0
je 0x4230d2
cmp dword [edi + 0x438], 0
mov dword [ebp - 0x3f8], 1
jne 0x4230b7
mov eax, dword [edi + 4]
mov dword [ebp - 0x444], eax
lea eax, [ebp - 0x44c]
push eax
mov dword [ebp - 0x44c], 0x10
mov dword [ebp - 0x448], 0x12
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov dword [edi + 0x438], 1
mov ecx, edi
mov dword [edi + 0x44c], 1
mov dword [edi + 0x414], 0
call fcn.0042abe0
call dword [sym.imp.USER32.dll_GetFocus]
mov esi, dword [edi + 4]
cmp eax, esi
je 0x42310a
test eax, eax
je 0x4230ee
push eax
call dword [sym.imp.USER32.dll_GetParent]
cmp eax, esi
je 0x42310a
push 1
push 1
mov ecx, edi
call fcn.004690c0
mov esi, dword [edi + 4]
push esi
call fcn.00420d40
add esp, 4
jmp case.0x4231d5.10003
cmp dword [ebp - 0x3f8], 0
je 0x423121
push esi
call fcn.00420d40
add esp, 4
jmp case.0x4231d5.10003
cmp dword [edi + 0x49c], 0
jne case.0x4231d5.10003
mov ecx, edi
call fcn.0041ed00
jmp case.0x4231d5.10003
lea esi, [edi + 0x30]
push str.btn_add_menu
mov ecx, esi
call fcn.00462870
push str.btn_add_menu_x
mov ecx, esi
mov edi, eax
call fcn.00462870
mov esi, eax
test edi, edi
je case.0x4231d5.10003
test esi, esi
je case.0x4231d5.10003
mov edx, dword [edi]
mov ecx, edi
push 1
call dword [edx + 0x114]
mov eax, dword [esi]
mov ecx, esi
push 0
call dword [eax + 0x114]
jmp case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.004260e0
jmp 0x4234dc
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.0042a0e0
jmp 0x4234dc
push edx
push dword [ebp + 0x10]
mov ecx, edi
push dword [ebp + 0xc]
push 0x1401
call fcn.004264c0
jmp case.0x4231d5.10003
lea eax, [ecx - 0x2711]
cmp eax, 0x12
ja case.0x4231d5.10003
jmp dword [eax*4 + 0x4235ac]
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.00427830
jmp 0x4234dc
lea ecx, [ebp - 0x3f4]
call fcn.00407980
push dword [edi + 4]
lea ecx, [ebp - 0x3f4]
mov dword [ebp - 4], 0xa
call fcn.00407fe0
push 0
push SysReAllocStringLen
push SysReAllocStringLen
push SysReAllocStringLen
push SysReAllocStringLen
push 0x100
push 0x96c80000
push 0
push dword [edi + 4]
lea ecx, [ebp - 0x3f4]
call fcn.004688a0
push dword [edi + 4]
lea ecx, [ebp - 0x3f4]
call fcn.00460030
push eax
call fcn.0043cc80
add esp, 8
mov dword [edi + 0x49c], 1
lea ecx, [ebp - 0x3f4]
call fcn.00468fc0
lea ecx, [ebp - 0x3c4]
mov dword [edi + 0x49c], 0
mov dword [ebp - method.DuiLib::INotifyUI.virtual_0], vtable.DuiLib::WindowImplBase.0
mov dword [ebp - method.DuiLib::WindowImplBase.1.virtual_0], vtable.DuiLib::WindowImplBase.1.0
mov dword [ebp - fcn.004696b0], vtable.DuiLib::WindowImplBase.2.0
mov dword [ebp - method.DuiLib::WindowImplBase.3.virtual_0], vtable.DuiLib::WindowImplBase.3.0
mov dword [ebp - method.DuiLib::WindowImplBase.4.virtual_0], vtable.DuiLib::WindowImplBase.4.0
call fcn.00461a40
lea ecx, [ebp - 0x3dc]
call fcn.0045f600
lea ecx, [ebp - 0x3f4]
call fcn.004686f0
xor ebx, ebx
jmp case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.00427830
xor ebx, ebx
jmp case.0x4231d5.10003
mov ecx, edi
call fcn.0042a290
xor ebx, ebx
jmp case.0x4231d5.10003
push 1
mov ecx, edi
call fcn.0042cd30
xor ebx, ebx
jmp case.0x4231d5.10003
push 2
mov ecx, edi
call fcn.0042cd30
xor ebx, ebx
jmp case.0x4231d5.10003
push 3
mov ecx, edi
call fcn.0042cd30
xor ebx, ebx
jmp case.0x4231d5.10003
lea eax, [ebp - 0x3f8]
mov ecx, edi
push eax
call fcn.00421510
push 0
lea eax, [ebp - 0x3f8]
mov dword [ebp - 4], 0xb
push eax
mov ecx, edi
call fcn.004204a0
mov edx, dword [ebp - 0x3f8]
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg case.0x4231d5.10004
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor ebx, ebx
jmp case.0x4231d5.10003
lea eax, [ebp - 0x400]
mov ecx, edi
push eax
call fcn.00421510
push 1
lea eax, [ebp - 0x400]
mov dword [ebp - 4], 0xc
push eax
mov ecx, edi
call fcn.004204a0
mov edx, dword [ebp - 0x400]
jmp 0x42334f
lea eax, [ebp - 0x3fc]
mov ecx, edi
push eax
call fcn.00421510
mov esi, dword [ebp - 0x3fc]
mov dword [ebp - 4], 0xd
cmp dword [esi - 0xc], 0
je 0x423422
mov ecx, esi
mov dword [ebp - 0x48], 0
xor eax, eax
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4233e0
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x58]
call fcn.004167f0
lea eax, [ebp - 0x58]
mov byte [ebp - 4], 0xe
push eax
mov ecx, edi
call fcn.0041f9a0
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0xd
mov bl, al
call fcn.00409b00
test bl, bl
jne 0x423422
push esi
mov ecx, edi
call fcn.00428830
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg case.0x4231d5.10004
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
xor ebx, ebx
jmp case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.00427b20
jmp 0x4234dc
lea eax, [edi + 0x410]
mov ecx, edi
push eax
call fcn.0042b080
xor ebx, ebx
jmp case.0x4231d5.10003
mov eax, dword [edi + 0x48c]
lea ebx, [edi + 0x48c]
cmp dword [eax - 0xc], 0
je case.0x4231d5.10004
push ebx
mov ecx, edi
call fcn.0042b360
cmp dword [edi + 0x47c], 0
je 0x4234c2
push 0
push ecx
mov esi, esp
mov dword [ebp - 0x404], esi
mov eax, dword [ebx]
sub eax, 0x10
push eax
call fcn.00407c20
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov ecx, dword [edi + 0x47c]
call fcn.0043c2a0
mov ecx, ebx
call fcn.00418ca0
xor ebx, ebx
jmp case.0x4231d5.10003
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, edi
call fcn.00427e70
mov ebx, eax
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004da36e
mov esp, ebp
pop ebp
ret 0x10