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

Disassembly:
mov cl, byte [esp + 0x14]
mov dl, byte [esp + 0x30]
sub esp, 0x3c
push ebx
mov bl, byte [esp + 0x58]
test cl, cl
jne 0x40a1fe
test bl, bl
jne 0x40a1fe
cmp byte [esp + 0x5c], bl
jne 0x40a1fe
cmp byte [esp + 0x60], bl
jne 0x40a1fe
cmp byte [esp + 0x64], bl
jne 0x40a1fe
cmp byte [esp + 0x68], bl
jne 0x40a1fe
cmp byte [esp + 0x6c], bl
jne 0x40a1fe
test dl, dl
je 0x40aa31
mov eax, dword [esp + 0x4c]
test ax, ax
je 0x40aa31
push ebp
push esi
push edi
cmp ax, 1
jne 0x40a290
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov ebp, dword [esp + 0x5c]
test dl, dl
jne 0x40a228
test cl, cl
je 0x40a236
push ebp
lea eax, [esi + 1]
push edi
push eax
call fcn.00403b40
add esp, 0xc
test bl, bl
jne 0x40a240
cmp byte [esp + 0x68], bl
je 0x40a24e
push ebp
lea ecx, [edi + 1]
push ecx
push esi
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x6c], 0
jne 0x40a25c
cmp byte [esp + 0x70], 0
je 0x40a26a
push ebp
lea edx, [esi - 1]
push edi
push edx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x74], 0
jne 0x40a27c
cmp byte [esp + 0x78], 0
je 0x40aa2e
push ebp
dec edi
push edi
push esi
call fcn.00403b40
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
add eax, eax
add eax, eax
add eax, eax
movzx ecx, ax
mov ebp, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
movsx eax, cx
mov edx, eax
imul edx, eax
add ecx, 0xfffffffc
mov dword [esp + 0x3c], eax
movzx ecx, cx
mov dword [esp + 0x38], edx
cdq
sub eax, edx
movsx edi, cx
sar eax, 1
cmp edi, eax
mov byte [esp + 0x13], 1
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], ecx
mov dword [esp + 0x48], eax
jl 0x40a9f1
mov ecx, dword [esp + 0x30]
lea eax, [edi + 3]
imul eax, edi
add ecx, 8
movzx edx, cx
shl eax, 0xa
mov dword [esp + 0x2c], edx
cdq
idiv dword [esp + 0x38]
mov ecx, 0x400
sub ecx, eax
shl ecx, 8
push ecx
call fcn.00403630
imul eax, dword [esp + 0x40]
movsx edx, word [esp + 0x30]
shr eax, 9
add edx, 4
inc eax
sar edx, 3
movzx eax, ax
movzx ecx, dx
movsx edx, ax
add edx, 4
sar edx, 3
add edi, 4
mov dword [esp + 0x34], eax
movzx eax, dx
sar edi, 3
add esp, 4
cmp byte [esp + 0x13], 0
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
movzx edi, di
je 0x40a553
cmp byte [esp + 0x64], 0
jne 0x40a380
cmp byte [esp + 0x68], 0
je 0x40a3cf
movzx eax, bp
mov dword [esp + 0x14], eax
cmp byte [esp + 0x68], 0
je 0x40a38f
mov ecx, ebp
sub ecx, dword [esp + 0x20]
movzx edx, cx
mov dword [esp + 0x18], edx
jmp 0x40a396
mov ecx, dword [esp + 0x20]
add ecx, ebp
movzx edx, cx
mov dword [esp + 0x14], edx
jmp 0x40a36a
movzx eax, bp
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
push esi
lea ecx, [edi + ebx]
push ecx
push edx
push eax
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a3cf
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
push esi
lea ecx, [edi + ebx - 1]
push ecx
push edx
push eax
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x74], 0
jne 0x40a3fa
cmp byte [esp + 0x78], 0
je 0x40a44f
movzx eax, bp
mov dword [esp + 0x18], eax
cmp byte [esp + 0x78], 0
je 0x40a409
mov ecx, dword [esp + 0x20]
add ecx, ebp
movzx edx, cx
mov dword [esp + 0x14], edx
jmp 0x40a410
mov ecx, ebp
sub ecx, dword [esp + 0x20]
movzx edx, cx
mov dword [esp + 0x18], edx
jmp 0x40a3e4
movzx eax, bp
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov eax, ebx
sub eax, edi
push esi
push eax
push ecx
push edx
mov dword [esp + 0x3c], eax
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a44f
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push esi
inc eax
push eax
push ecx
push edx
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x6c], 0
jne 0x40a47a
cmp byte [esp + 0x70], 0
je 0x40a4cf
movzx edx, bx
mov dword [esp + 0x14], edx
cmp byte [esp + 0x70], 0
je 0x40a489
mov eax, ebx
sub eax, dword [esp + 0x20]
movzx ecx, ax
mov dword [esp + 0x18], ecx
jmp 0x40a490
mov eax, dword [esp + 0x20]
add eax, ebx
movzx ecx, ax
mov dword [esp + 0x14], ecx
jmp 0x40a464
movzx edx, bx
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push esi
push ecx
mov eax, ebp
sub eax, edi
push edx
push eax
mov dword [esp + 0x3c], eax
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a4cf
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
push esi
push eax
push ecx
inc edx
push edx
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x7c], 0
jne 0x40a4fa
cmp byte [esp + 0x60], 0
je 0x40a549
movzx edx, bx
mov dword [esp + 0x18], edx
cmp byte [esp + 0x60], 0
je 0x40a509
mov eax, dword [esp + 0x20]
add eax, ebx
movzx ecx, ax
mov dword [esp + 0x14], ecx
jmp 0x40a510
mov eax, ebx
sub eax, dword [esp + 0x20]
movzx ecx, ax
mov dword [esp + 0x18], ecx
jmp 0x40a4e4
movzx edx, bx
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
push esi
push eax
push ecx
lea edx, [edi + ebp]
push edx
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a549
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
push esi
push eax
push ecx
lea edx, [edi + ebp - 1]
push edx
call fcn.004044a0
add esp, 0x10
mov byte [esp + 0x13], 0
jmp 0x40a7e2
mov ecx, dword [esp + 0x20]
cmp cx, di
jge 0x40a7ff
mov edx, dword [esp + 0x1c]
mov eax, edx
neg eax
mov dword [esp + 0x40], eax
add eax, ebp
movzx eax, ax
mov dword [esp + 0x28], eax
mov eax, ecx
neg eax
mov dword [esp + 0x44], eax
add edx, ebp
add eax, ebp
add ecx, ebp
cmp byte [esp + 0x64], 0
movzx edx, dx
movzx eax, ax
movzx ecx, cx
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
je 0x40a5d6
push esi
lea edx, [edi + ebx]
push edx
mov eax, ecx
mov ecx, dword [esp + 0x2c]
push eax
push ecx
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a5d6
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
push esi
lea edx, [edi + ebx - 1]
push edx
push eax
push ecx
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x68], 0
je 0x40a616
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
push esi
lea edx, [edi + ebx]
push edx
push eax
push ecx
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a616
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
push esi
lea edx, [edi + ebx - 1]
push edx
push eax
push ecx
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x74], 0
je 0x40a65c
mov edx, dword [esp + 0x28]
mov eax, ebx
sub eax, edi
push esi
push eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x20]
push edx
push eax
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a65c
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
push esi
inc ecx
push ecx
push edx
push eax
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x78], 0
je 0x40a6a2
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
mov eax, ebx
sub eax, edi
push esi
push eax
push ecx
push edx
mov dword [esp + 0x3c], eax
call fcn.00404480
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a6a2
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
push esi
inc eax
push eax
push ecx
push edx
call fcn.00404480
add esp, 0x10
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x1c]
add eax, ebx
movzx ecx, ax
add edx, ebx
movzx eax, dx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
add ecx, ebx
add eax, ebx
cmp byte [esp + 0x7c], 0
movzx edx, cx
movzx ecx, ax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
je 0x40a716
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
push esi
push edx
push eax
lea ecx, [edi + ebp]
push ecx
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a716
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
push esi
push edx
push eax
lea ecx, [edi + ebp - 1]
push ecx
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x40a756
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
push esi
push edx
push eax
lea ecx, [edi + ebp]
push ecx
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a756
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
push esi
push edx
push eax
lea ecx, [edi + ebp - 1]
push ecx
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x6c], 0
je 0x40a79c
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
push esi
push edx
mov eax, ebp
sub eax, edi
push ecx
push eax
mov dword [esp + 0x3c], eax
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a79c
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
push esi
push edx
push eax
inc ecx
push ecx
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x70], 0
je 0x40a7e2
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
push esi
push edx
mov eax, ebp
sub eax, edi
push ecx
push eax
mov dword [esp + 0x3c], eax
call fcn.004044a0
add esp, 0x10
cmp byte [esp + 0x80], 0
je 0x40a7e2
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
push esi
push edx
push eax
inc ecx
push ecx
call fcn.004044a0
add esp, 0x10
mov eax, dword [esp + 0x34]
sub eax, 8
movsx edi, ax
cmp edi, dword [esp + 0x48]
mov dword [esp + 0x34], eax
jge 0x40a2e0
jmp 0x40a9f1
cmp byte [esp + 0x60], 0
je 0x40a83a
mov edx, dword [esp + 0x1c]
lea eax, [edx + ebx]
push esi
lea ecx, [edi + ebp]
push eax
push ecx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a83a
mov eax, dword [esp + 0x1c]
push esi
add eax, ebx
push eax
lea ecx, [edi + ebp - 1]
push ecx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x64], 0
je 0x40a876
mov edx, dword [esp + 0x1c]
lea eax, [edi + ebx]
push esi
lea ecx, [edx + ebp]
push eax
push ecx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a876
mov ecx, dword [esp + 0x1c]
push esi
lea eax, [edi + ebx - 1]
push eax
lea eax, [ecx + ebp]
push eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x68], 0
je 0x40a8b2
lea ecx, [edi + ebx]
mov eax, ebp
sub eax, dword [esp + 0x1c]
push esi
push ecx
push eax
mov dword [esp + 0x38], eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a8b2
mov eax, dword [esp + 0x2c]
push esi
lea edx, [edi + ebx - 1]
push edx
push eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x6c], 0
je 0x40a8f3
mov ecx, dword [esp + 0x1c]
add ecx, ebx
push esi
mov eax, ebp
sub eax, edi
push ecx
push eax
mov dword [esp + 0x38], eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a8f3
mov edx, dword [esp + 0x1c]
lea eax, [edx + ebx]
push esi
push eax
mov eax, dword [esp + 0x34]
inc eax
push eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x70], 0
je 0x40a935
mov eax, ebx
sub eax, dword [esp + 0x1c]
push esi
mov ecx, ebp
sub ecx, edi
push eax
push ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a935
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
push esi
push ecx
inc edx
push edx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x74], 0
je 0x40a977
mov ecx, ebx
sub ecx, edi
mov eax, ebp
sub eax, dword [esp + 0x1c]
push esi
push ecx
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a977
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
push esi
inc eax
push eax
push ecx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x78], 0
je 0x40a9b9
mov edx, dword [esp + 0x1c]
mov eax, ebx
sub eax, edi
push esi
lea ecx, [edx + ebp]
push eax
push ecx
mov dword [esp + 0x34], eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a9b9
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
inc eax
push esi
push eax
lea eax, [ecx + ebp]
push eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x7c], 0
je 0x40a9f8
mov eax, ebx
sub eax, dword [esp + 0x1c]
push esi
push eax
add edi, ebp
push edi
mov dword [esp + 0x34], eax
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x80], 0
je 0x40a9f1
mov edx, dword [esp + 0x28]
push esi
push edx
dec edi
push edi
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x7c], 0
jne 0x40a9ff
cmp byte [esp + 0x60], 0
je 0x40aa11
mov eax, dword [esp + 0x58]
push esi
lea ecx, [eax + ebp]
push ebx
push ecx
call fcn.00403b40
add esp, 0xc
cmp byte [esp + 0x6c], 0
jne 0x40aa1f
cmp byte [esp + 0x70], 0
je 0x40aa2e
sub ebp, dword [esp + 0x58]
push esi
push ebx
push ebp
call fcn.00403b40
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret