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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov ebx, dword [esp + 0x70]
mov esi, dword [esp + 0x74]
mov ebp, dword [esp + 0x78]
mov eax, dword [ebx + 0x78]
test al, 1
je 0x46e84a
test al, 4
jne 0x46e6f8
test esi, esi
je 0x46e526
test byte [esi + 9], 4
nop
jne 0x46e720
lea edx, [ebp + 1]
mov ecx, 2
mov eax, ebx
call fcn.0046bf10
test eax, eax
mov edi, eax
je 0x46e775
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
mov dword [esp], ebx
call fcn.0046c4f0
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.0046c720
test eax, eax
jne 0x46e7a0
lea eax, [edi + ebp]
mov ebp, edi
mov byte [eax], 0
cmp byte [edi], 0
mov dword [esp + 0x2c], eax
je 0x46e581
add ebp, 1
cmp byte [ebp], 0
jne 0x46e578
lea eax, [ebp + 0xc]
cmp dword [esp + 0x2c], eax
jbe 0x46e768
movzx eax, byte [ebp + 1]
test al, al
js 0x46e744
movzx edx, byte [ebp + 2]
shl eax, 0x18
movzx ecx, byte [ebp + 4]
shl edx, 0x10
add edx, eax
movzx eax, byte [ebp + 3]
add edx, ecx
shl eax, 8
add eax, edx
mov dword [esp + 0x3c], eax
movzx edx, byte [ebp + 5]
movzx eax, byte [ebp + 6]
shl edx, 0x18
shl eax, 0x10
add eax, edx
movzx edx, byte [ebp + 8]
add edx, eax
movzx eax, byte [ebp + 7]
shl eax, 8
add eax, edx
mov dword [esp + 0x40], eax
movzx eax, byte [ebp + 9]
mov byte [esp + 0x33], al
movzx eax, byte [ebp + 0xa]
cmp al, 2
jne 0x46e790
movzx ecx, byte [esp + 0x33]
lea edx, [ecx - 1]
cmp dl, 1
setbe cl
cmp al, 3
setne dl
test cl, dl
jne 0x46e6e0
cmp al, 4
jne 0x46e6ce
cmp byte [esp + 0x33], 3
ja 0x46e7a8
cmp byte [ebp + 0xb], 0
lea ecx, [ebp + 0xb]
mov dword [esp + 0x44], ecx
je 0x46e7c5
mov ebp, ecx
add ebp, 1
cmp byte [ebp], 0
jne 0x46e631
movzx eax, al
mov dword [esp + 0x34], eax
shl eax, 2
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.0046ba10
test eax, eax
mov dword [esp + 0x38], eax
je 0x46e83d
mov ecx, dword [esp + 0x2c]
xor eax, eax
mov edx, dword [esp + 0x34]
add ecx, 1
test edx, edx
je 0x46e7e8
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x38]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x2c]
lea edx, [ebp + 1]
cmp esi, edx
mov dword [edi + eax*4], edx
jb 0x46e6a6
cmp byte [ebp + 1], 0
jne 0x46e69f
jmp 0x46e7d0
cmp byte [edx], 0
je 0x46e7d0
add edx, 1
cmp edx, ecx
jne 0x46e696
mov eax, dword [esp + 0x38]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0046ba50
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], str.invalid_data
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00459c00
cmp byte [esp + 0x33], 3
jne 0x46e613
lea esi, [esi]
mov dword [esp + 0x74], str.invalid_parameter_count
mov dword [esp + 0x70], ebx
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00459c00
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046c720
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], str.out_of_place
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00459c00
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046c720
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], str.duplicate
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00459c00
movzx edx, byte [ebp + 2]
shl eax, 0x18
shl edx, 0x10
add edx, eax
movzx eax, byte [ebp + 4]
add edx, eax
movzx eax, byte [ebp + 3]
shl eax, 8
add eax, edx
mov dword [esp + 0x3c], eax
jmp 0x46e5b9
mov dword [esp + 0x74], str.invalid
jmp 0x46e6e8
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046c720
mov dword [esp + 0x74], 0x5406ef
jmp 0x46e6e8
cmp byte [esp + 0x33], 0
jne 0x46e5f0
jmp 0x46e6e0
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 4], str.unrecognized_equation_type
mov dword [esp], ebx
mov dword [esp + 0x34], eax
call fcn.00459c00
mov eax, dword [esp + 0x34]
jmp 0x46e61e
mov ebp, dword [esp + 0x44]
jmp 0x46e63a
add eax, 1
cmp eax, dword [esp + 0x34]
jge 0x46e7e0
mov ebp, edx
jmp 0x46e681
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x20], ebp
mov dword [esp], ebx
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x33]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
call fcn.00461670
mov dword [esp + 0x74], ebp
mov dword [esp + 0x70], ebx
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.0046ba50
mov dword [esp + 0x74], 0x5406ef
jmp 0x46e6e8
mov dword [esp + 4], str.missing_IHDR
mov dword [esp], ebx
call fcn.00459bb0
lea esi, [esi]