Function at 0x470bf0
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 + 0x70]
test al, 1
je 0x470f9a
test al, 4
jne 0x470e00
test esi, esi
je 0x470c26
test byte [esi + 9], 4
nop
jne 0x470e24
lea edx, [ebp + 1]
mov ecx, 2
mov eax, ebx
call fcn.0046e370
test eax, eax
mov edi, eax
je 0x470ec1
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
mov dword [esp], ebx
call fcn.0046e5c0
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.0046e6c0
test eax, eax
jne 0x470ef0
lea eax, [edi + ebp]
mov ebp, edi
mov byte [eax], 0
cmp byte [edi], 0
mov dword [esp + 0x2c], eax
je 0x470c81
add ebp, 1
cmp byte [ebp], 0
jne 0x470c78
mov eax, dword [esp + 0x2c]
sub eax, ebp
cmp eax, 0xc
jle 0x470eb4
movzx eax, byte [ebp + 1]
test al, al
js 0x470e80
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 + 0x34], eax
movzx edx, byte [ebp + 5]
test dl, dl
js 0x470e48
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 + 0x38], eax
movzx eax, byte [ebp + 9]
mov byte [esp + 0x33], al
movzx eax, byte [ebp + 0xa]
cmp al, 2
jne 0x470ee0
movzx ecx, byte [esp + 0x33]
lea edx, [ecx - 1]
cmp dl, 1
setbe cl
cmp al, 3
setne dl
test cl, dl
jne 0x470de8
cmp al, 4
jne 0x470ddd
cmp byte [esp + 0x33], 3
ja 0x470ef8
cmp byte [ebp + 0xb], 0
lea ecx, [ebp + 0xb]
mov dword [esp + 0x44], ecx
je 0x470f15
mov ebp, ecx
nop
lea esi, [esi]
add ebp, 1
cmp byte [ebp], 0
jne 0x470d40
movzx eax, al
mov dword [esp + 0x3c], eax
shl eax, 2
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00463460
test eax, eax
mov dword [esp + 0x40], eax
je 0x470f8d
mov ecx, dword [esp + 0x2c]
xor eax, eax
mov edx, dword [esp + 0x3c]
add ecx, 1
test edx, edx
je 0x470f38
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x40]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x2c]
lea edx, [ebp + 1]
cmp esi, edx
mov dword [edi + eax*4], edx
jb 0x470db5
cmp byte [ebp + 1], 0
jne 0x470dae
jmp 0x470f20
cmp byte [edx], 0
je 0x470f20
add edx, 1
cmp edx, ecx
jne 0x470da5
mov eax, dword [esp + 0x40]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00463480
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.00461ae0
cmp byte [esp + 0x33], 3
jne 0x470d1d
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.00461ae0
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046e6c0
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.00461ae0
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046e6c0
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], str.duplicate
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00461ae0
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 + 0x38], eax
neg dword [esp + 0x38]
and dword [esp + 0x38], 0x7fffffff
neg dword [esp + 0x38]
jmp 0x470ce6
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 + 0x34], eax
neg dword [esp + 0x34]
and dword [esp + 0x34], 0x7fffffff
neg dword [esp + 0x34]
jmp 0x470cbb
mov dword [esp + 0x74], str.invalid
jmp 0x470df0
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046e6c0
mov dword [esp + 0x74], 0x567bcc
jmp 0x470df0
cmp byte [esp + 0x33], 0
jne 0x470cfa
jmp 0x470de8
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 + 0x3c], eax
call fcn.00461ae0
mov eax, dword [esp + 0x3c]
jmp 0x470d28
mov ebp, dword [esp + 0x44]
jmp 0x470d49
add eax, 1
cmp eax, dword [esp + 0x3c]
jge 0x470f30
mov ebp, edx
jmp 0x470d90
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
mov ebp, dword [esp + 0x40]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x3c]
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 + 0x38]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], eax
call fcn.00473860
mov dword [esp + 0x74], ebp
mov dword [esp + 0x70], ebx
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00463480
mov dword [esp + 0x74], 0x567bcc
jmp 0x470df0
mov dword [esp + 4], str.missing_IHDR
mov dword [esp], ebx
call fcn.004619e0
lea esi, [esi]