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

Disassembly:
sub esp, 0x7c
push esi
xor esi, esi
mov dword [esp + 8], esi
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], esi
cmp word [esp + 0x94], si
je 0x458774
mov eax, dword [esp + 0x84]
mov ecx, dword [eax]
mov edx, dword [ecx]
test byte [edx + 0x44], 0x40
je 0x458774
xor al, al
pop esi
add esp, 0x7c
ret
mov eax, dword [esp + 0x88]
movzx eax, word [eax]
mov dword [esp + 0x60], eax
cmp ax, 0x3f
ja 0x45876d
movzx ecx, ax
mov eax, 1
xor edx, edx
mov byte [esp + 5], 1
mov dword [esp + 0x24], ecx
call fcn.00499a90
add eax, 0xffffffff
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x90]
adc edx, 0xffffffff
and eax, 0x800
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x2c], 0x182
mov dword [esp + 0x50], eax
je 0x4587e0
mov dword [esp + 0x2c], 0x183
push ebx
push ebp
push edi
mov dword [esp + 0x34], esi
jmp 0x4587f0
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x58]
ja 0x458df5
jb 0x45880e
mov edx, dword [esp + 0x18]
cmp edx, dword [esp + 0x54]
jae 0x458df5
movzx eax, word [esp + 0xa0]
mov ecx, dword [esp + 0x34]
cmp ecx, eax
jg 0x458df5
xor ebx, ebx
cmp ecx, ebx
jle 0x45883a
mov edx, dword [esp + 0x14]
mov esi, dword [edx + 8]
mov edx, dword [edx + 0xc]
or dword [esp + 0x40], esi
or dword [esp + 0x44], edx
cmp ecx, eax
jge 0x458860
mov eax, dword [esp + 0x98]
mov edx, dword [eax + 0x18]
mov eax, dword [edx + ecx*4]
mov dword [esp + 0x14], eax
cmp word [esp + 0x5c], bx
jne 0x458dde
xor ebx, ebx
mov ebp, eax
jmp 0x45886b
mov ebp, dword [esp + 0xa4]
mov dword [esp + 0x14], ebp
test dword [ebp + 0x24], 0x400
jne 0x458def
movzx eax, byte [ebp + 0x10]
xor ecx, ecx
cmp dword [esp + 0x30], ebx
lea edx, [eax + eax*8]
mov eax, dword [esp + 0x90]
mov word [ebp + 0x1e], cx
mov ecx, dword [eax + 4]
mov edi, dword [ecx + edx*8 + 0x34]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x20], ebx
jle 0x4589c8
mov edx, dword [esp + 0x94]
add edx, 4
mov dword [esp + 0x28], edx
jmp 0x4588c4
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov eax, 1
xor edx, edx
call fcn.00499a90
mov ecx, edx
mov ebx, eax
and eax, dword [esp + 0x18]
mov dword [esp + 0x68], ecx
and ecx, dword [esp + 0x1c]
or eax, ecx
jne 0x4589ae
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
call fcn.00424b00
mov esi, eax
cmp byte [esi], 0x94
jne 0x4589ae
cmp dword [esi + 0x1c], edi
jne 0x4589ae
movzx ecx, word [esp + 0x38]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
push ecx
movsx ecx, word [esi + 0x20]
not edx
not eax
push eax
push edx
mov edx, dword [esp + 0x9c]
push ecx
push edi
add edx, 0x50
xor ecx, ecx
call fcn.00456dc0
add esp, 0x14
test eax, eax
je 0x4589ae
movzx ecx, word [eax + 0xc]
cmp cx, 1
jne 0x458974
movzx edi, word [ebp + 0x28]
xor ecx, ecx
test edi, edi
jle 0x45896c
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 0x30]
cmp eax, dword [edx]
je 0x45896c
mov ebp, dword [esp + 0x14]
movzx ebp, word [ebp + 0x28]
inc ecx
add edx, 4
cmp ecx, ebp
jl 0x458958
cmp ecx, edi
mov ebp, dword [esp + 0x14]
jge 0x4589ae
movzx ecx, word [eax + 0xc]
test cl, 0x82
je 0x4589a2
cmp word [esi + 0x20], 0
jl 0x4589a2
mov eax, dword [eax]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x90]
mov esi, dword [edx]
push eax
mov eax, dword [ecx]
call fcn.00452900
add esp, 4
test eax, eax
je 0x4589ae
mov eax, dword [esp + 0x68]
or dword [esp + 0x18], ebx
or dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
add dword [esp + 0x28], 0x18
inc eax
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x20], eax
jl 0x4588c0
xor ebx, ebx
mov eax, dword [ebp + 0x24]
test eax, 0x1000
jne 0x458cdb
test eax, 0x100
je 0x4589ec
mov dword [esp + 0x28], ebx
mov dword [esp + 0x50], ebx
mov eax, 1
jmp 0x458a1a
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x28], ecx
cmp ecx, ebx
je 0x458e4e
test byte [ecx + 0x38], 4
jne 0x458e4e
movzx edx, word [ecx + 0x32]
cmp byte [ecx + 0x36], 0
movzx eax, word [ecx + 0x34]
mov dword [esp + 0x50], edx
setne byte [esp + 0x11]
movzx eax, ax
cmp eax, ebx
mov byte [esp + 0x25], 0
mov byte [esp + 0x27], 0
mov byte [esp + 0x26], 0
mov dword [esp + 0x60], eax
jle 0x458cdb
mov dword [esp + 0x2c], ebx
lea esp, [esp]
movzx edi, word [ebp + 0x18]
cmp ebx, edi
mov byte [esp + 0x12], 1
jge 0x458aab
movzx eax, word [ebp + 0x2a]
cmp ebx, eax
jl 0x458aab
mov edx, dword [ebp + 0x30]
mov eax, dword [edx + ebx*4]
movzx ecx, word [eax + 0xc]
mov esi, ecx
and esi, dword [esp + 0x38]
test si, si
je 0x458a80
test ecx, 0x100
je 0x458cc6
mov byte [esp + 0x11], 0
jmp 0x458cc6
test cl, 1
je 0x458aab
mov esi, dword [eax]
lea eax, [ebx + 1]
cmp eax, edi
jge 0x458aab
lea ecx, [edx + ebx*4 + 4]
mov edx, dword [ecx]
cmp dword [edx], esi
je 0x458aa6
movzx edx, word [ebp + 0x18]
inc eax
add ecx, 4
cmp eax, edx
jl 0x458a92
jmp 0x458aab
mov byte [esp + 0x12], 0
mov esi, dword [esp + 0x28]
test esi, esi
je 0x458ad5
mov ecx, dword [esi + 0x1c]
mov dl, byte [ebx + ecx]
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0xc]
movsx eax, word [eax + ebx*2]
mov byte [esp + 0x13], dl
movsx edx, word [ecx + 0x28]
mov dword [esp + 0x20], eax
cmp eax, edx
jne 0x458ae1
jmp 0x458ada
mov byte [esp + 0x13], 0
or eax, 0xffffffff
mov dword [esp + 0x20], eax
cmp byte [esp + 0x11], 0
je 0x458b05
test eax, eax
jl 0x458b05
cmp ebx, edi
jl 0x458b05
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 4]
shl eax, 4
cmp byte [edx + eax + 0xc], 0
jne 0x458b05
mov byte [esp + 0x11], 0
xor edi, edi
cmp byte [esp + 0x12], 0
je 0x458c09
mov ebp, dword [esp + 0x94]
add ebp, 4
lea esp, [esp]
cmp edi, dword [esp + 0x30]
jge 0x458c09
mov eax, 1
xor edx, edx
mov ecx, edi
call fcn.00499a90
and eax, dword [esp + 0x18]
and edx, dword [esp + 0x1c]
or eax, edx
jne 0x458bfa
mov eax, dword [ebp]
test eax, eax
je 0x458b72
nop
mov ecx, dword [eax + 4]
test ecx, 0x1000
je 0x458b72
test ecx, 0x40000
je 0x458b6b
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 4]
jmp 0x458b6e
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x458b50
test byte [esp + 0x9c], 0xc0
jne 0x458b81
mov byte [esp + 0x12], 0
mov esi, dword [esp + 0x20]
cmp esi, 0xffffffff
jl 0x458ba0
cmp byte [eax], 0x94
jne 0x458bfa
mov ecx, dword [esp + 0x3c]
cmp dword [eax + 0x1c], ecx
jne 0x458bfa
movsx edx, word [eax + 0x20]
cmp edx, esi
jmp 0x458bbe
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x28]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [edx + ecx + 4]
mov edx, dword [esp + 0x3c]
push edx
call fcn.00441170
add esp, 4
test eax, eax
jne 0x458bfa
cmp esi, 0xffffffff
je 0x458c34
mov ecx, dword [esp + 0x90]
mov esi, dword [ecx]
mov eax, dword [ebp]
push esi
call fcn.004527b0
mov ecx, eax
add esp, 4
test ecx, ecx
jne 0x458be5
mov edx, dword [esi]
mov ecx, dword [edx + 8]
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x20]
mov eax, dword [edx + ebx*4]
mov ecx, dword [ecx]
call fcn.0041ce50
test eax, eax
je 0x458c34
inc edi
add ebp, 0x18
cmp byte [esp + 0x12], 0
jne 0x458b20
test ebx, ebx
je 0x458c16
movzx ecx, word [esp + 0x50]
cmp ebx, ecx
jge 0x458c1b
mov byte [esp + 0x11], 0
mov ebp, dword [esp + 0x14]
cmp byte [esp + 0x26], 0
je 0x458cdb
mov byte [esp + 0x11], 1
jmp 0x458cea
test byte [esp + 0x9c], 0x40
mov ecx, dword [esp + 0x14]
lea eax, [ebx + 1]
mov word [ecx + 0x1e], ax
jne 0x458ca0
cmp byte [esp + 0x25], 0
lea edx, [edi + edi*2]
je 0x458c6a
mov al, byte [esp + 0x13]
xor al, byte [esp + 0x27]
mov ecx, dword [esp + 0x94]
cmp al, byte [ecx + edx*8 + 0x10]
jne 0x458c09
jmp 0x458ca0
mov eax, dword [esp + 0x94]
mov al, byte [eax + edx*8 + 0x10]
xor al, byte [esp + 0x13]
mov byte [esp + 0x27], al
je 0x458c9b
mov ecx, dword [esp + 0x34]
mov eax, 1
xor edx, edx
call fcn.00499a90
mov ecx, dword [esp + 0xa8]
or dword [ecx], eax
or dword [ecx + 4], edx
mov byte [esp + 0x25], 1
cmp dword [esp + 0x20], 0xffffffff
jne 0x458cac
mov byte [esp + 0x26], 1
mov eax, 1
xor edx, edx
mov ecx, edi
call fcn.00499a90
or dword [esp + 0x18], eax
or dword [esp + 0x1c], edx
mov ebp, dword [esp + 0x14]
add dword [esp + 0x2c], 0x18
inc ebx
cmp ebx, dword [esp + 0x60]
jl 0x458a40
jmp 0x458c1f
cmp byte [esp + 0x11], 0
je 0x458dde
mov ebp, dword [esp + 0x14]
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
or dword [esp + 0x48], edx
or dword [esp + 0x4c], eax
xor ecx, ecx
cmp dword [esp + 0x30], ecx
mov dword [esp + 0x20], ecx
jle 0x458dde
mov edx, dword [esp + 0x94]
add edx, 4
mov dword [esp + 0x2c], edx
jmp 0x458d20
mov eax, 1
xor edx, edx
call fcn.00499a90
mov ecx, edx
mov ebx, eax
and eax, dword [esp + 0x18]
mov dword [esp + 0x68], ecx
and ecx, dword [esp + 0x1c]
or eax, ecx
jne 0x458dc6
mov eax, dword [esp + 0x2c]
mov esi, dword [eax]
mov ecx, dword [esp + 0x90]
add ecx, 0x1e8
push esi
push ecx
call fcn.00430810
mov edi, eax
mov ebp, edx
mov edx, edi
add esp, 8
or edx, ebp
jne 0x458da6
mov byte [esp + 0x84], 1
mov dword [esp + 0x74], 0x424d80
mov dword [esp + 0x78], 0x424d30
mov dword [esp + 0x88], edx
test esi, esi
je 0x458da6
lea eax, [esp + 0x70]
push esi
push eax
call fcn.0042e820
add esp, 8
cmp byte [esp + 0x84], 0
je 0x458dc6
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
not eax
not ecx
and eax, edi
and ecx, ebp
or eax, ecx
jne 0x458dc6
mov ecx, dword [esp + 0x68]
or dword [esp + 0x18], ebx
or dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x20]
add dword [esp + 0x2c], 0x18
inc ecx
cmp ecx, dword [esp + 0x30]
mov dword [esp + 0x20], ecx
jl 0x458d20
inc dword [esp + 0x34]
cmp byte [esp + 0x11], 0
jne 0x4587f0
jmp 0x458df5
cmp byte [ebp + 0x1d], 0
jne 0x458e09
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
cmp ebp, dword [esp + 0x54]
jne 0x458e15
cmp edi, dword [esp + 0x58]
jne 0x458e15
mov al, byte [esp + 0x6c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x7c
ret
cmp byte [esp + 0x11], 0
jne 0x458e62
mov ebx, dword [esp + 0x30]
dec ebx
test ebx, ebx
jle 0x458e4e
mov eax, 1
xor edx, edx
mov ecx, ebx
call fcn.00499a90
add eax, 0xffffffff
adc edx, 0xffffffff
mov ecx, eax
mov esi, edx
and ecx, ebp
and esi, edi
cmp ecx, eax
jne 0x458e49
cmp esi, edx
je 0x458e58
dec ebx
test ebx, ebx
jg 0x458e25
pop edi
pop ebp
pop ebx
xor al, al
pop esi
add esp, 0x7c
ret
pop edi
pop ebp
mov al, bl
pop ebx
pop esi
add esp, 0x7c
ret
pop edi
pop ebp
pop ebx
or al, 0xff
pop esi
add esp, 0x7c
ret