Function at 0x458e80
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 0x458eb4
mov eax, dword [esp + 0x84]
mov ecx, dword [eax]
mov edx, dword [ecx]
test byte [edx + 0x44], 0x40
je 0x458eb4
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 0x458ead
movzx ecx, ax
mov eax, 1
xor edx, edx
mov byte [esp + 5], 1
mov dword [esp + 0x24], ecx
call fcn.0049a1d0
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 0x458f20
mov dword [esp + 0x2c], 0x183
push ebx
push ebp
push edi
mov dword [esp + 0x34], esi
jmp 0x458f30
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x58]
ja 0x459535
jb 0x458f4e
mov edx, dword [esp + 0x18]
cmp edx, dword [esp + 0x54]
jae 0x459535
movzx eax, word [esp + 0xa0]
mov ecx, dword [esp + 0x34]
cmp ecx, eax
jg 0x459535
xor ebx, ebx
cmp ecx, ebx
jle 0x458f7a
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 0x458fa0
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 0x45951e
xor ebx, ebx
mov ebp, eax
jmp 0x458fab
mov ebp, dword [esp + 0xa4]
mov dword [esp + 0x14], ebp
test dword [ebp + 0x24], 0x400
jne 0x45952f
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 0x459108
mov edx, dword [esp + 0x94]
add edx, 4
mov dword [esp + 0x28], edx
jmp 0x459004
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov eax, 1
xor edx, edx
call fcn.0049a1d0
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 0x4590ee
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
call fcn.00425250
mov esi, eax
cmp byte [esi], 0x94
jne 0x4590ee
cmp dword [esi + 0x1c], edi
jne 0x4590ee
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.00457500
add esp, 0x14
test eax, eax
je 0x4590ee
movzx ecx, word [eax + 0xc]
cmp cx, 1
jne 0x4590b4
movzx edi, word [ebp + 0x28]
xor ecx, ecx
test edi, edi
jle 0x4590ac
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 0x30]
cmp eax, dword [edx]
je 0x4590ac
mov ebp, dword [esp + 0x14]
movzx ebp, word [ebp + 0x28]
inc ecx
add edx, 4
cmp ecx, ebp
jl 0x459098
cmp ecx, edi
mov ebp, dword [esp + 0x14]
jge 0x4590ee
movzx ecx, word [eax + 0xc]
test cl, 0x82
je 0x4590e2
cmp word [esi + 0x20], 0
jl 0x4590e2
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.00453040
add esp, 4
test eax, eax
je 0x4590ee
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 0x459000
xor ebx, ebx
mov eax, dword [ebp + 0x24]
test eax, 0x1000
jne 0x45941b
test eax, 0x100
je 0x45912c
mov dword [esp + 0x28], ebx
mov dword [esp + 0x50], ebx
mov eax, 1
jmp 0x45915a
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x28], ecx
cmp ecx, ebx
je 0x45958e
test byte [ecx + 0x38], 4
jne 0x45958e
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 0x45941b
mov dword [esp + 0x2c], ebx
lea esp, [esp]
movzx edi, word [ebp + 0x18]
cmp ebx, edi
mov byte [esp + 0x12], 1
jge 0x4591eb
movzx eax, word [ebp + 0x2a]
cmp ebx, eax
jl 0x4591eb
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 0x4591c0
test ecx, 0x100
je 0x459406
mov byte [esp + 0x11], 0
jmp 0x459406
test cl, 1
je 0x4591eb
mov esi, dword [eax]
lea eax, [ebx + 1]
cmp eax, edi
jge 0x4591eb
lea ecx, [edx + ebx*4 + 4]
mov edx, dword [ecx]
cmp dword [edx], esi
je 0x4591e6
movzx edx, word [ebp + 0x18]
inc eax
add ecx, 4
cmp eax, edx
jl 0x4591d2
jmp 0x4591eb
mov byte [esp + 0x12], 0
mov esi, dword [esp + 0x28]
test esi, esi
je 0x459215
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 0x459221
jmp 0x45921a
mov byte [esp + 0x13], 0
or eax, 0xffffffff
mov dword [esp + 0x20], eax
cmp byte [esp + 0x11], 0
je 0x459245
test eax, eax
jl 0x459245
cmp ebx, edi
jl 0x459245
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 4]
shl eax, 4
cmp byte [edx + eax + 0xc], 0
jne 0x459245
mov byte [esp + 0x11], 0
xor edi, edi
cmp byte [esp + 0x12], 0
je 0x459349
mov ebp, dword [esp + 0x94]
add ebp, 4
lea esp, [esp]
cmp edi, dword [esp + 0x30]
jge 0x459349
mov eax, 1
xor edx, edx
mov ecx, edi
call fcn.0049a1d0
and eax, dword [esp + 0x18]
and edx, dword [esp + 0x1c]
or eax, edx
jne 0x45933a
mov eax, dword [ebp]
test eax, eax
je 0x4592b2
nop
mov ecx, dword [eax + 4]
test ecx, 0x1000
je 0x4592b2
test ecx, 0x40000
je 0x4592ab
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 4]
jmp 0x4592ae
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x459290
test byte [esp + 0x9c], 0xc0
jne 0x4592c1
mov byte [esp + 0x12], 0
mov esi, dword [esp + 0x20]
cmp esi, 0xffffffff
jl 0x4592e0
cmp byte [eax], 0x94
jne 0x45933a
mov ecx, dword [esp + 0x3c]
cmp dword [eax + 0x1c], ecx
jne 0x45933a
movsx edx, word [eax + 0x20]
cmp edx, esi
jmp 0x4592fe
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.004418b0
add esp, 4
test eax, eax
jne 0x45933a
cmp esi, 0xffffffff
je 0x459374
mov ecx, dword [esp + 0x90]
mov esi, dword [ecx]
mov eax, dword [ebp]
push esi
call fcn.00452ef0
mov ecx, eax
add esp, 4
test ecx, ecx
jne 0x459325
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.0041d5c0
test eax, eax
je 0x459374
inc edi
add ebp, 0x18
cmp byte [esp + 0x12], 0
jne 0x459260
test ebx, ebx
je 0x459356
movzx ecx, word [esp + 0x50]
cmp ebx, ecx
jge 0x45935b
mov byte [esp + 0x11], 0
mov ebp, dword [esp + 0x14]
cmp byte [esp + 0x26], 0
je 0x45941b
mov byte [esp + 0x11], 1
jmp 0x45942a
test byte [esp + 0x9c], 0x40
mov ecx, dword [esp + 0x14]
lea eax, [ebx + 1]
mov word [ecx + 0x1e], ax
jne 0x4593e0
cmp byte [esp + 0x25], 0
lea edx, [edi + edi*2]
je 0x4593aa
mov al, byte [esp + 0x13]
xor al, byte [esp + 0x27]
mov ecx, dword [esp + 0x94]
cmp al, byte [ecx + edx*8 + 0x10]
jne 0x459349
jmp 0x4593e0
mov eax, dword [esp + 0x94]
mov al, byte [eax + edx*8 + 0x10]
xor al, byte [esp + 0x13]
mov byte [esp + 0x27], al
je 0x4593db
mov ecx, dword [esp + 0x34]
mov eax, 1
xor edx, edx
call fcn.0049a1d0
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 0x4593ec
mov byte [esp + 0x26], 1
mov eax, 1
xor edx, edx
mov ecx, edi
call fcn.0049a1d0
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 0x459180
jmp 0x45935f
cmp byte [esp + 0x11], 0
je 0x45951e
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 0x45951e
mov edx, dword [esp + 0x94]
add edx, 4
mov dword [esp + 0x2c], edx
jmp 0x459460
mov eax, 1
xor edx, edx
call fcn.0049a1d0
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 0x459506
mov eax, dword [esp + 0x2c]
mov esi, dword [eax]
mov ecx, dword [esp + 0x90]
add ecx, 0x1e8
push esi
push ecx
call fcn.00430f50
mov edi, eax
mov ebp, edx
mov edx, edi
add esp, 8
or edx, ebp
jne 0x4594e6
mov byte [esp + 0x84], 1
mov dword [esp + 0x74], 0x4254d0
mov dword [esp + 0x78], 0x425480
mov dword [esp + 0x88], edx
test esi, esi
je 0x4594e6
lea eax, [esp + 0x70]
push esi
push eax
call fcn.0042ef70
add esp, 8
cmp byte [esp + 0x84], 0
je 0x459506
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
not eax
not ecx
and eax, edi
and ecx, ebp
or eax, ecx
jne 0x459506
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 0x459460
inc dword [esp + 0x34]
cmp byte [esp + 0x11], 0
jne 0x458f30
jmp 0x459535
cmp byte [ebp + 0x1d], 0
jne 0x459549
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
cmp ebp, dword [esp + 0x54]
jne 0x459555
cmp edi, dword [esp + 0x58]
jne 0x459555
mov al, byte [esp + 0x6c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x7c
ret
cmp byte [esp + 0x11], 0
jne 0x4595a2
mov ebx, dword [esp + 0x30]
dec ebx
test ebx, ebx
jle 0x45958e
mov eax, 1
xor edx, edx
mov ecx, ebx
call fcn.0049a1d0
add eax, 0xffffffff
adc edx, 0xffffffff
mov ecx, eax
mov esi, edx
and ecx, ebp
and esi, edi
cmp ecx, eax
jne 0x459589
cmp esi, edx
je 0x459598
dec ebx
test ebx, ebx
jg 0x459565
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