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

Disassembly:
sub esp, 0x9c
push ebx
mov ebx, dword [esp + 0xa8]
mov eax, edx
mov dword [esp + 0x98], eax
push ebp
mov ebp, ecx
push esi
push edi
cmp ebx, 0xa
jae 0x403081
mov eax, 0xffffffec
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x9c
ret
mov edi, dword [esp + 0xb8]
add eax, ebp
mov esi, dword [esp + 0xb0]
mov ecx, esi
mov dword [esp + 0xa0], eax
add eax, 0xfffffffd
mov dword [esp + 0x40], eax
lea eax, [edi + 4]
mov dword [esp + 0x10], eax
call fcn.00401080
movzx eax, ax
lea ecx, [esi + 2]
mov dword [esp + 0x3c], eax
call fcn.00401080
movzx eax, ax
lea ecx, [esi + 4]
mov dword [esp + 0x18], eax
call fcn.00401080
movzx ecx, ax
lea eax, [esi + 6]
mov dword [esp + 0xa8], eax
sub ebx, ecx
add eax, dword [esp + 0x3c]
sub ebx, dword [esp + 0x18]
sub ebx, dword [esp + 0x3c]
mov dword [esp + 0x24], eax
sub ebx, 6
add eax, dword [esp + 0x18]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xa4]
add eax, 3
mov dword [esp + 0x98], ecx
shr eax, 2
mov dword [esp + 0x94], ebx
mov dword [esp + 0x28], 1
lea ecx, [eax + ebp]
lea edx, [ecx + eax]
mov dword [esp + 0x20], ecx
add eax, edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], eax
mov esi, eax
mov dword [esp + 0x14], eax
mov ebx, edx
mov eax, dword [edi]
shr eax, 0x10
movzx edi, al
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x94], eax
ja 0x403071
push dword [esp + 0x3c]
mov edx, dword [esp + 0xac]
lea ecx, [esp + 0x48]
call fcn.00401090
add esp, 4
cmp eax, 0xffffff88
ja 0x4039e7
push dword [esp + 0x18]
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x5c]
call fcn.00401090
add esp, 4
cmp eax, 0xffffff88
ja 0x4039e7
push dword [esp + 0x98]
mov edx, dword [esp + 0xa0]
lea ecx, [esp + 0x70]
call fcn.00401090
add esp, 4
cmp eax, 0xffffff88
ja 0x4039e7
mov eax, dword [esp + 0x98]
lea ecx, [esp + 0x80]
mov edx, dword [esp + 0x9c]
push dword [esp + 0x94]
lea edx, [edx + eax]
call fcn.00401090
add esp, 4
cmp eax, 0xffffff88
ja 0x4039e7
mov eax, 0x1f
mov ecx, esi
sub eax, edi
mov dword [esp + 0x3c], eax
cmp ecx, dword [esp + 0x40]
jae 0x4033f7
lea ebx, [eax + 1]
and ebx, 0x1f
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
shr edx, cl
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x5c]
and ecx, 0x1f
mov edi, dword [esp + 0x84]
movzx eax, byte [ebx + edx*2 + 1]
add eax, dword [esp + 0x48]
mov dword [esp + 0x24], eax
movzx eax, byte [ebx + edx*2]
mov edx, dword [esp + 0x58]
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x30]
mov byte [ebp], al
inc ebp
mov dword [esp + 0x18], ebp
movzx eax, byte [ebx + edx*2]
movzx ebp, byte [ebx + edx*2 + 1]
mov byte [ecx], al
inc ecx
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x70]
and ecx, 0x1f
add ebp, dword [esp + 0x5c]
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x38]
movzx eax, byte [eax + edx*2]
movzx ebx, byte [ebx + edx*2 + 1]
mov byte [ecx], al
inc ecx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x38], ecx
mov ecx, edi
and ecx, 0x1f
add ebx, dword [esp + 0x70]
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x10]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov edx, dword [esp + 0x24]
mov ecx, edx
mov byte [esi], al
and ecx, 0x1f
mov eax, dword [esp + 0x44]
shl eax, cl
mov ecx, dword [esp + 0x14]
shr eax, cl
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + eax*2 + 1]
add eax, edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x24]
movzx eax, byte [ecx + eax*2]
mov ecx, dword [esp + 0x18]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
movzx eax, byte [eax + edx*2 + 1]
add eax, ebp
mov dword [esp + 0x5c], eax
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
movzx eax, byte [ebp + edx*2]
mov edx, dword [esp + 0x6c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x38]
movzx eax, byte [ebp + edx*2 + 1]
add eax, ebx
mov dword [esp + 0x70], eax
movzx eax, byte [ebp + edx*2]
mov edx, dword [esp + 0x80]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x38], ecx
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
lea ecx, [esp + 0x44]
movzx eax, byte [ebp + edx*2 + 1]
add eax, edi
mov dword [esp + 0x84], eax
movzx eax, byte [ebp + edx*2]
mov byte [esi + 1], al
add esi, 2
call fcn.004011d0
xor edi, edi
lea ecx, [esp + 0x58]
test eax, eax
cmove edi, dword [esp + 0x28]
call fcn.004011d0
neg eax
lea ecx, [esp + 0x6c]
sbb ebx, ebx
inc ebx
and ebx, edi
call fcn.004011d0
xor ebp, ebp
lea ecx, [esp + 0x80]
test eax, eax
cmove ebp, ebx
call fcn.004011d0
mov ebx, dword [esp + 0x14]
neg eax
sbb eax, eax
inc eax
and ebp, eax
cmp esi, dword [esp + 0x40]
mov dword [esp + 0x28], ebp
sbb eax, eax
test ebp, eax
mov ebp, dword [esp + 0x18]
jne 0x403210
mov ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x20]
cmp ebp, eax
ja 0x403071
mov edx, dword [esp + 0x34]
cmp dword [esp + 0x30], edx
ja 0x403071
cmp ebx, ecx
ja 0x403071
lea ebx, [eax - 3]
lea ecx, [esp + 0x44]
mov dword [esp + 0x24], ebx
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, ebx
sbb eax, eax
neg eax
test eax, ecx
mov eax, dword [esp + 0x3c]
je 0x4034b9
mov esi, dword [esp + 0x10]
inc eax
mov dword [esp + 0x18], eax
and eax, 0x1f
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x48]
mov ecx, edi
mov ebx, dword [esp + 0x44]
and ecx, 0x1f
mov edx, ebx
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [esi + edx*2 + 1]
add edi, eax
movzx eax, byte [esi + edx*2]
mov ecx, edi
mov byte [ebp], al
and ecx, 0x1f
shl ebx, cl
mov ecx, dword [esp + 0x28]
shr ebx, cl
lea ecx, [esp + 0x44]
movzx eax, byte [esi + ebx*2 + 1]
add eax, edi
mov dword [esp + 0x48], eax
movzx eax, byte [esi + ebx*2]
mov byte [ebp + 1], al
add ebp, 2
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, dword [esp + 0x24]
sbb eax, eax
neg eax
test eax, ecx
mov eax, dword [esp + 0x28]
jne 0x403450
mov esi, dword [esp + 0x14]
jmp 0x4034be
inc eax
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x44]
call fcn.00401200
mov ebx, dword [esp + 0x1c]
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, dword [esp + 0x20]
sbb eax, eax
neg ebx
neg eax
test eax, ecx
je 0x40353c
mov esi, dword [esp + 0x10]
mov eax, ebx
and eax, 0x1f
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov edi, dword [esp + 0x48]
mov ecx, edi
mov edx, dword [esp + 0x44]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
lea ecx, [esp + 0x44]
movzx eax, byte [esi + edx*2 + 1]
add edi, eax
mov al, byte [esi + edx*2]
mov byte [ebp], al
inc ebp
mov dword [esp + 0x48], edi
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, ebx
sbb eax, eax
neg eax
test eax, ecx
mov eax, dword [esp + 0x24]
jne 0x4034f3
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
and ebx, 0x1f
mov dword [esp + 0x1c], ebx
cmp ebp, dword [esp + 0x20]
jae 0x40357c
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov ecx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
shr edx, cl
movzx eax, byte [edi + edx*2 + 1]
add esi, eax
mov al, byte [edi + edx*2]
mov byte [ebp], al
inc ebp
cmp ebp, dword [esp + 0x20]
jb 0x403551
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0x58]
add eax, 0xfffffffd
mov dword [esp + 0x28], eax
call fcn.00401200
mov ebp, dword [esp + 0x30]
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, dword [esp + 0x28]
sbb eax, eax
neg eax
test eax, ecx
mov eax, dword [esp + 0x18]
je 0x403629
and eax, 0x1f
mov dword [esp + 0x20], eax
jmp 0x4035ba
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x5c]
mov ecx, edi
mov ebx, dword [esp + 0x58]
and ecx, 0x1f
mov esi, dword [esp + 0x10]
mov edx, ebx
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [esi + edx*2 + 1]
add edi, eax
movzx eax, byte [esi + edx*2]
mov ecx, edi
mov byte [ebp], al
and ecx, 0x1f
shl ebx, cl
mov ecx, dword [esp + 0x20]
shr ebx, cl
lea ecx, [esp + 0x58]
movzx eax, byte [esi + ebx*2 + 1]
add eax, edi
mov edi, esi
mov dword [esp + 0x5c], eax
movzx eax, byte [edi + ebx*2]
mov byte [ebp + 1], al
add ebp, 2
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, dword [esp + 0x28]
sbb eax, eax
neg eax
test eax, ecx
jne 0x4035b6
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
jmp 0x403630
and eax, 0x1f
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x58]
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, dword [esp + 0x34]
sbb eax, eax
neg eax
test eax, ecx
je 0x403699
mov esi, dword [esp + 0x34]
nop
mov edi, dword [esp + 0x5c]
mov ecx, edi
mov edx, dword [esp + 0x58]
and ecx, 0x1f
mov eax, dword [esp + 0x10]
shl edx, cl
mov ecx, ebx
shr edx, cl
lea ecx, [esp + 0x58]
movzx eax, byte [eax + edx*2 + 1]
add edi, eax
mov dword [esp + 0x5c], edi
mov edi, dword [esp + 0x10]
mov al, byte [edi + edx*2]
mov byte [ebp], al
inc ebp
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x403650
mov esi, dword [esp + 0x14]
cmp ebp, dword [esp + 0x34]
jae 0x4036ce
mov esi, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
mov ecx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
shr edx, cl
movzx eax, byte [edi + edx*2 + 1]
add esi, eax
mov al, byte [edi + edx*2]
mov byte [ebp], al
inc ebp
cmp ebp, dword [esp + 0x34]
jb 0x4036a3
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x2c]
lea ecx, [esp + 0x6c]
add ebx, 0xfffffffd
mov dword [esp + 0x24], ebx
call fcn.00401200
mov ebp, dword [esp + 0x38]
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, ebx
sbb eax, eax
neg eax
test eax, ecx
je 0x403771
mov eax, dword [esp + 0x18]
and eax, 0x1f
mov dword [esp + 0x18], eax
mov edi, dword [esp + 0x70]
mov ecx, edi
mov ebx, dword [esp + 0x6c]
and ecx, 0x1f
mov esi, dword [esp + 0x10]
mov edx, ebx
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [esi + edx*2 + 1]
add edi, eax
movzx eax, byte [esi + edx*2]
mov ecx, edi
mov byte [ebp], al
and ecx, 0x1f
shl ebx, cl
mov ecx, dword [esp + 0x18]
shr ebx, cl
lea ecx, [esp + 0x6c]
movzx eax, byte [esi + ebx*2 + 1]
add eax, edi
mov edi, esi
mov dword [esp + 0x70], eax
movzx eax, byte [edi + ebx*2]
mov byte [ebp + 1], al
add ebp, 2
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, dword [esp + 0x24]
sbb eax, eax
neg eax
test eax, ecx
mov eax, dword [esp + 0x18]
jne 0x403704
mov esi, dword [esp + 0x14]
lea ecx, [esp + 0x6c]
call fcn.00401200
mov ebx, dword [esp + 0x1c]
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, dword [esp + 0x2c]
sbb eax, eax
neg eax
test eax, ecx
je 0x4037dc
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x70]
mov ecx, edi
mov edx, dword [esp + 0x6c]
and ecx, 0x1f
mov eax, dword [esp + 0x10]
shl edx, cl
mov ecx, ebx
shr edx, cl
lea ecx, [esp + 0x6c]
movzx eax, byte [eax + edx*2 + 1]
add edi, eax
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x10]
mov al, byte [edi + edx*2]
mov byte [ebp], al
inc ebp
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp ebp, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x403793
mov esi, dword [esp + 0x14]
cmp ebp, dword [esp + 0x2c]
jae 0x403811
mov esi, dword [esp + 0x70]
mov edx, dword [esp + 0x6c]
mov ecx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
shr edx, cl
movzx eax, byte [edi + edx*2 + 1]
add esi, eax
mov al, byte [edi + edx*2]
mov byte [ebp], al
inc ebp
cmp ebp, dword [esp + 0x2c]
jb 0x4037e6
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x14]
lea ecx, [esp + 0x80]
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp esi, dword [esp + 0x40]
sbb eax, eax
neg eax
test eax, ecx
je 0x4038b3
nop dword [eax]
nop word [eax + eax]
mov edi, dword [esp + 0x84]
mov ecx, edi
mov ebx, dword [esp + 0x80]
and ecx, 0x1f
mov ebp, dword [esp + 0x10]
mov edx, ebx
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
movzx eax, byte [ebp + edx*2 + 1]
add edi, eax
movzx eax, byte [ebp + edx*2]
mov ecx, edi
mov byte [esi], al
and ecx, 0x1f
shl ebx, cl
mov ecx, dword [esp + 0x20]
shr ebx, cl
lea ecx, [esp + 0x80]
movzx eax, byte [ebp + ebx*2 + 1]
add eax, edi
mov edi, ebp
mov dword [esp + 0x84], eax
movzx eax, byte [edi + ebx*2]
mov byte [esi + 1], al
add esi, 2
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp esi, dword [esp + 0x40]
sbb eax, eax
neg eax
test eax, ecx
jne 0x403840
lea ecx, [esp + 0x80]
call fcn.00401200
mov ebp, dword [esp + 0xa0]
neg eax
mov ebx, dword [esp + 0x1c]
sbb ecx, ecx
inc ecx
cmp esi, ebp
sbb eax, eax
neg eax
test eax, ecx
je 0x403930
nop dword [eax]
mov edi, dword [esp + 0x84]
mov ecx, edi
mov edx, dword [esp + 0x80]
and ecx, 0x1f
mov eax, dword [esp + 0x10]
shl edx, cl
mov ecx, ebx
shr edx, cl
lea ecx, [esp + 0x80]
movzx eax, byte [eax + edx*2 + 1]
add edi, eax
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x10]
mov al, byte [edi + edx*2]
mov byte [esi], al
inc esi
call fcn.00401200
neg eax
sbb ecx, ecx
inc ecx
cmp esi, ebp
sbb eax, eax
neg eax
test eax, ecx
jne 0x4038e0
cmp esi, ebp
mov ebp, dword [esp + 0x84]
jae 0x403968
nop dword [eax + eax]
mov edx, dword [esp + 0x80]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
shr edx, cl
movzx eax, byte [edi + edx*2 + 1]
add ebp, eax
mov al, byte [edi + edx*2]
mov byte [esi], al
inc esi
cmp esi, dword [esp + 0xa0]
jb 0x403940
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x50]
jne 0x403980
cmp dword [esp + 0x48], 0x20
jne 0x403980
mov edx, 1
jmp 0x403982
xor edx, edx
mov eax, dword [esp + 0x60]
cmp eax, dword [esp + 0x64]
jne 0x40399a
cmp dword [esp + 0x5c], 0x20
jne 0x40399a
mov esi, 1
jmp 0x40399c
xor esi, esi
mov eax, dword [esp + 0x74]
cmp eax, dword [esp + 0x78]
jne 0x4039b4
cmp dword [esp + 0x70], 0x20
jne 0x4039b4
mov ecx, 1
jmp 0x4039b6
xor ecx, ecx
mov eax, dword [esp + 0x88]
cmp eax, dword [esp + 0x8c]
jne 0x4039d0
cmp ebp, 0x20
jne 0x4039d0
lea eax, [ebp - 0x1f]
jmp 0x4039d2
xor eax, eax
and eax, ecx
mov ecx, 0xffffffec
and eax, esi
test edx, eax
mov eax, dword [esp + 0xa4]
cmove eax, ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x9c
ret