Function at 0x588990
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x4c
push ebx
push esi
mov esi, dword [esp + 0x58]
mov eax, dword [esi]
xor ebx, ebx
push edi
mov edi, dword [esi + 0xc]
cmp edi, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edi
jne 0x5889d4
call fcn.00551e00
mov edi, eax
cmp edi, ebx
mov dword [esi + 0xc], eax
mov dword [esp + 0x28], edi
je 0x5889d4
push 0x87
call fcn.0054c280
add esp, 4
cmp dword [esp + 0x78], ebx
push ebp
jge 0x588a24
mov esi, dword [edi + 0xc]
cmp dword [edi + 0x10], esi
mov eax, dword [esp + 0x70]
movzx ebp, byte [eax + 0x18]
jg 0x5889fb
call fcn.0054c1a0
test eax, eax
je 0x5889fb
mov esi, 1
jmp 0x588a20
mov edx, dword [edi + 0x14]
add dword [edi + 0xc], 1
lea ecx, [esi + esi*4]
lea eax, [edx + ecx*4]
mov byte [eax], 0x6f
mov byte [eax + 3], bl
mov dword [eax + 4], ebp
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebx
mov byte [eax + 1], bl
mov byte [edi + 0x62], bl
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x70]
cmp dword [eax + 0x14], ebx
mov dword [esp + 0x1c], ebx
jle 0x588f2c
mov esi, dword [esp + 0x18]
test esi, esi
je 0x588a8d
cmp byte [esi + 0x1e], 0
je 0x588a4a
xor ebp, ebp
jmp 0x588b7f
cmp byte [esi + 0xea], 0
je 0x588a8d
cmp word [esi + 0xe8], 0x31
jb 0x588a8d
mov ebp, dword [esi + 0xf4]
test ebp, ebp
je 0x588a8d
mov ecx, dword [ebp]
add dword [esi + 0xec], 1
mov eax, dword [esi + 0xec]
cmp eax, dword [esi + 0xf0]
mov dword [esi + 0xf4], ecx
jle 0x588ae8
mov dword [esi + 0xf0], eax
jmp 0x588ae8
cmp dword [0x66b268], 0
je 0x588ac9
mov eax, dword [0x6711e0]
test eax, eax
je 0x588aa9
push eax
call dword [0x66b2b0]
add esp, 4
lea ebx, [esp + 0x24]
mov eax, 0x31
call fcn.00549020
mov eax, dword [0x6711e0]
test eax, eax
je 0x588ad8
push eax
call dword [0x66b2b8]
jmp 0x588ad5
push 0x31
call dword [0x66b280]
mov dword [esp + 0x28], eax
add esp, 4
mov ebp, dword [esp + 0x24]
test ebp, ebp
jne 0x588af0
test esi, esi
je 0x588ae8
mov byte [esi + 0x1e], 1
test ebp, ebp
je 0x588b7f
push 0x31
push 0
push ebp
call fcn.005c0cf0
push 0
lea eax, [ebp + 0x30]
push 0
push eax
mov byte [ebp], 0x84
mov word [ebp + 0x1e], 0xffff
mov dword [ebp + 4], eax
call fcn.005c3170
mov edx, dword [ebp + 4]
mov eax, dword [esp + 0x84]
add esp, 0x18
test eax, eax
mov byte [edx], 0
mov dword [ebp + 0x2c], 1
je 0x588b74
mov ecx, dword [esp + 0x1c]
mov eax, dword [eax + 8]
mov eax, dword [eax + ecx*4]
mov edx, dword [esp + 0x68]
cmp dword [edx + 4], eax
mov edi, dword [edx + 0xc]
lea ecx, [eax + eax*2]
lea ecx, [edi + ecx*8]
jne 0x588b4e
or eax, 0xffffffff
mov edx, dword [esp + 0x78]
lea eax, [eax + edx + 1]
mov dword [ebp + 0x18], eax
mov dl, byte [ecx + 0x16]
mov eax, dword [esp + 0x60]
mov byte [ebp + 1], dl
push eax
mov eax, dword [ecx + 0x10]
call fcn.00571940
add esp, 4
mov dword [ebp + 0x14], eax
jmp 0x588b7f
mov ecx, dword [esp + 0x78]
mov dword [ebp + 0x18], ecx
mov byte [ebp + 1], 0x64
mov eax, dword [esp + 0x74]
test eax, eax
je 0x588b90
mov edx, dword [esp + 0x1c]
mov eax, dword [eax + edx*4]
jmp 0x588b97
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x24]
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xc]
lea eax, [eax + eax*2]
mov ecx, dword [ecx + eax*8]
test ecx, ecx
mov dword [esp + 0x34], ecx
je 0x588bcc
cmp byte [ecx], 0
mov eax, ecx
je 0x588bbd
add eax, 1
cmp byte [eax], 0
jne 0x588bb5
sub eax, ecx
and eax, 0x3fffffff
mov ebx, eax
mov dword [esp + 0x14], eax
jmp 0x588bd2
xor ebx, ebx
mov dword [esp + 0x14], ebx
test esi, esi
lea edi, [ebx + 0x31]
je 0x588c29
cmp byte [esi + 0x1e], 0
je 0x588be6
xor esi, esi
jmp 0x588cee
cmp byte [esi + 0xea], 0
je 0x588c29
movzx edx, word [esi + 0xe8]
cmp edi, edx
jg 0x588c29
mov eax, dword [esi + 0xf4]
test eax, eax
je 0x588c29
mov ecx, dword [eax]
add dword [esi + 0xec], 1
mov dword [esi + 0xf4], ecx
mov ecx, dword [esi + 0xec]
cmp ecx, dword [esi + 0xf0]
jle 0x588c86
mov dword [esi + 0xf0], ecx
jmp 0x588c86
lea edx, [edi - 1]
cmp edx, 0x7ffffefe
ja 0x588cc3
cmp dword [0x66b268], 0
je 0x588cb3
mov eax, dword [0x6711e0]
test eax, eax
je 0x588c54
push eax
call dword [0x66b2b0]
add esp, 4
lea ebx, [esp + 0x20]
mov eax, edi
call fcn.00549020
mov eax, dword [0x6711e0]
test eax, eax
je 0x588c72
push eax
call dword [0x66b2b8]
add esp, 4
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x588c82
test esi, esi
je 0x588c82
mov byte [esi + 0x1e], 1
mov ebx, dword [esp + 0x14]
mov esi, eax
test esi, esi
je 0x588cee
push edi
push 0
push esi
call fcn.005c0cf0
lea eax, [ebx + 1]
add esp, 0xc
test eax, eax
mov byte [esi], 0x1a
mov word [esi + 0x1e], 0xffff
jne 0x588ccb
or word [esi + 2], 0x400
mov dword [esi + 4], eax
jmp 0x588ce7
push edi
call dword [0x66b280]
add esp, 4
mov dword [esp + 0x20], eax
jmp 0x588c72
xor eax, eax
mov dword [esp + 0x20], eax
jmp 0x588c7a
mov ecx, dword [esp + 0x34]
push ebx
lea eax, [esi + 0x30]
push ecx
push eax
mov dword [esi + 4], eax
call fcn.005c3170
mov edx, dword [esi + 4]
add esp, 0xc
mov byte [ebx + edx], 0
mov dword [esi + 0x2c], 1
mov eax, dword [esp + 0x60]
mov edi, dword [eax]
test edi, edi
je 0x588d47
cmp byte [edi + 0x1e], 0
je 0x588d05
xor edi, edi
jmp 0x588dc5
cmp byte [edi + 0xea], 0
je 0x588d47
cmp word [edi + 0xe8], 0x30
jb 0x588d47
mov eax, dword [edi + 0xf4]
test eax, eax
je 0x588d47
mov ecx, dword [eax]
add dword [edi + 0xec], 1
mov dword [edi + 0xf4], ecx
mov ecx, dword [edi + 0xec]
cmp ecx, dword [edi + 0xf0]
jle 0x588da2
mov dword [edi + 0xf0], ecx
jmp 0x588da2
cmp dword [0x66b268], 0
je 0x588d83
mov eax, dword [0x6711e0]
test eax, eax
je 0x588d63
push eax
call dword [0x66b2b0]
add esp, 4
lea ebx, [esp + 0x28]
mov eax, 0x30
call fcn.00549020
mov eax, dword [0x6711e0]
test eax, eax
je 0x588d92
push eax
call dword [0x66b2b8]
jmp 0x588d8f
push 0x30
call dword [0x66b280]
mov dword [esp + 0x2c], eax
add esp, 4
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x588da2
test edi, edi
je 0x588da2
mov byte [edi + 0x1e], 1
mov edi, eax
test edi, edi
je 0x588dc5
push 0x30
push 0
push edi
call fcn.005c0cf0
add esp, 0xc
mov byte [edi], 0x4c
mov word [edi + 0x1e], 0xffff
mov dword [edi + 0x2c], 1
test edi, edi
mov edx, dword [esp + 0x60]
mov ebx, dword [edx]
jne 0x588de5
push ebp
push ebx
call fcn.0054cef0
push esi
push ebx
call fcn.0054cef0
add esp, 0x10
jmp 0x588e97
test esi, esi
je 0x588e00
mov dword [edi + 0xc], esi
test word [esi + 2], 0x100
je 0x588e00
or word [edi + 2], 0x100
mov eax, dword [esi + 0x14]
mov dword [edi + 0x14], eax
test ebp, ebp
je 0x588e1c
mov eax, pe_nt_image_headers32
mov dword [edi + 8], ebp
test word [ebp + 2], ax
je 0x588e1c
or word [edi + 2], ax
mov ecx, dword [ebp + 0x14]
mov dword [edi + 0x14], ecx
mov eax, dword [edi + 8]
xor ebp, ebp
test eax, eax
mov dword [esp + 0x14], ebp
je 0x588e36
mov eax, dword [eax + 0x2c]
test eax, eax
jle 0x588e36
mov ebp, eax
mov dword [esp + 0x14], ebp
mov eax, dword [edi + 0xc]
test eax, eax
je 0x588e4a
mov eax, dword [eax + 0x2c]
cmp eax, ebp
jle 0x588e4a
mov ebp, eax
mov dword [esp + 0x14], ebp
test word [edi + 2], 0x800
mov ecx, dword [edi + 0x10]
je 0x588e64
lea eax, [esp + 0x14]
call fcn.00544e80
mov ebp, dword [esp + 0x14]
jmp 0x588e91
test ecx, ecx
je 0x588e91
xor esi, esi
cmp dword [ecx], esi
jle 0x588e91
xor edx, edx
mov eax, dword [ecx + 0xc]
mov eax, dword [edx + eax]
test eax, eax
je 0x588e87
mov eax, dword [eax + 0x2c]
cmp eax, ebp
jle 0x588e87
mov ebp, eax
mov dword [esp + 0x14], ebp
add esi, 1
add edx, 0x14
cmp esi, dword [ecx]
jl 0x588e70
add ebp, 1
mov dword [edi + 0x2c], ebp
mov ebx, dword [esp + 0x10]
test ebx, ebx
jne 0x588ea5
mov dword [esp + 0x10], edi
jmp 0x588f14
test edi, edi
je 0x588f14
mov ebp, dword [esp + 0x18]
mov ecx, 0x30
mov esi, ebp
call fcn.00549520
mov esi, eax
test esi, esi
je 0x588f91
push 0x30
push 0
push esi
call fcn.005c0cf0
mov eax, pe_nt_image_headers32
add esp, 0xc
mov byte [esi], 0x45
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x2c], 1
mov dword [esi + 0xc], edi
test word [edi + 2], ax
je 0x588ef8
or word [esi + 2], ax
mov ecx, dword [edi + 0x14]
mov dword [esi + 0x14], ecx
mov dword [esi + 8], ebx
test word [ebx + 2], ax
je 0x588f0b
or word [esi + 2], ax
mov edx, dword [ebx + 0x14]
mov dword [esi + 0x14], edx
call fcn.00544f00
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x70]
add eax, 1
cmp eax, dword [ecx + 0x14]
mov dword [esp + 0x1c], eax
jl 0x588a35
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x70]
cmp edx, dword [eax]
jne 0x5890a5
cmp dword [esp + 0x7c], 0
jle 0x5890a5
mov esi, dword [esp + 0x18]
mov ecx, 0x31
call fcn.00549520
mov ebx, eax
test ebx, ebx
je 0x588fa7
push 0x31
push 0
push ebx
call fcn.005c0cf0
push 0
lea eax, [ebx + 0x30]
push 0
or ebp, 0xffffffff
push eax
mov byte [ebx], 0x84
mov word [ebx + 0x1e], bp
mov dword [ebx + 4], eax
call fcn.005c3170
mov ecx, dword [ebx + 4]
mov byte [ecx], 0
add esp, 0x18
mov dword [ebx + 0x2c], 1
jmp 0x588faa
push ebx
push ebp
call fcn.0054cef0
push edi
push ebp
call fcn.0054cef0
add esp, 0x10
jmp 0x588f10
or ebp, 0xffffffff
mov ecx, 0x31
call fcn.00549520
mov edi, eax
test edi, edi
je 0x588feb
push 0x31
push 0
push edi
call fcn.005c0cf0
push 0
lea eax, [edi + 0x30]
push 0
push eax
mov byte [edi], 0x98
mov word [edi + 0x1e], bp
mov dword [edi + 4], eax
call fcn.005c3170
mov edx, dword [edi + 4]
mov byte [edx], 0
add esp, 0x18
mov dword [edi + 0x2c], 1
test ebx, ebx
je 0x58900c
test edi, edi
je 0x58900c
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x64]
mov dword [ebx + 0x18], eax
mov byte [ebx + 1], 0x64
mov edx, dword [ecx + 0x20]
mov dword [edi + 0x18], edx
mov word [edi + 0x1c], bp
mov ebp, dword [esp + 0x60]
mov esi, dword [ebp]
mov ecx, 0x30
call fcn.00549520
mov esi, eax
test esi, esi
je 0x589040
push 0x30
push 0
push esi
call fcn.005c0cf0
add esp, 0xc
mov byte [esi], 0x4b
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x2c], 1
test esi, esi
mov ebp, dword [ebp]
jne 0x58905a
push ebx
push ebp
call fcn.0054cef0
push edi
push ebp
call fcn.0054cef0
add esp, 0x10
jmp 0x589092
test edi, edi
mov eax, pe_nt_image_headers32
je 0x589076
mov dword [esi + 0xc], edi
test word [edi + 2], ax
je 0x589076
or word [esi + 2], ax
mov ecx, dword [edi + 0x14]
mov dword [esi + 0x14], ecx
test ebx, ebx
je 0x58908d
mov dword [esi + 8], ebx
test word [ebx + 2], ax
je 0x58908d
or word [esi + 2], ax
mov edx, dword [ebx + 0x14]
mov dword [esi + 0x14], edx
call fcn.00544f00
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov eax, esi
call fcn.00552780
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0x10]
xor eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
lea esi, [esp + 0x38]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], edi
call fcn.00561350
mov eax, dword [esp + 0x10]
xor ebx, ebx
push ebx
push ebx
push eax
push ebp
push edi
call fcn.005877c0
add esp, 0x14
cmp dword [esp + 0x7c], ebx
mov dword [esp + 0x60], eax
jle 0x589121
mov ecx, dword [esp + 0x70]
cmp byte [ecx + 0x18], bl
jne 0x589121
mov eax, dword [edi + 0x1a8]
cmp eax, ebx
je 0x58911a
mov edi, eax
mov byte [edi + 0x159], 1
mov edi, dword [esp + 0x2c]
mov esi, dword [edi + 0xc]
cmp dword [edi + 0x10], esi
mov edx, dword [esp + 0x70]
movzx ebp, byte [edx + 0x18]
jg 0x58913e
call fcn.0054c1a0
test eax, eax
jne 0x589167
mov ecx, dword [edi + 0x14]
add dword [edi + 0xc], 1
mov edx, dword [esp + 0x7c]
lea eax, [esi + esi*4]
lea eax, [ecx + eax*4]
mov byte [eax], 0x6e
mov byte [eax + 3], bl
mov dword [eax + 4], ebp
mov dword [eax + 8], edx
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebx
mov byte [eax + 1], bl
mov byte [edi + 0x62], bl
mov eax, dword [esp + 0x60]
cmp eax, ebx
pop ebp
je 0x589179
push eax
call fcn.0054f320
add esp, 4
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.0054cef0
mov eax, dword [esp + 0x34]
add esp, 8
cmp eax, ebx
je 0x5891a4
mov ecx, dword [edi + 0xc]
cmp ecx, eax
jle 0x5891a4
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x14]
mov dword [eax + edx*4 + 8], ecx
pop edi
pop esi
pop ebx
add esp, 0x4c
ret