Function at 0x40a550
Capabilities:
Packed with generic packer

Disassembly:
sub esp, 0x9cc
push ebx
push ebp
push esi
mov esi, eax
mov ecx, dword [esi + 0x8c]
mov eax, dword [ecx + 0x7f8]
cmp eax, 0x48
push edi
mov ebp, 1
ja 0x40a635
jmp loc.0079f600
call fcn.0040a160
mov eax, dword [esi + 0x554c]
xor edx, edx
cmp eax, edx
je 0x40a6c4
cmp eax, 7
je 0x40a6c4
cmp eax, 9
je 0x40a6c4
cmp eax, ebp
je 0x40a69e
mov ecx, 2
cmp eax, ecx
je 0x40a667
cmp eax, 8
je 0x40a667
cmp eax, 3
jne 0x40a690
mov dword [esi + 0x5d8], ebp
mov dword [esi + 0x5dc], ebp
mov dword [esi + 0x5e0], ecx
mov dword [esi + 0x5e4], ecx
mov dword [esi + 0x5e8], ebp
mov dword [esi + 0x5ec], ebp
jmp 0x40a73a
cmp eax, 4
je 0x40a69e
cmp eax, 5
jne 0x40a73a
mov dword [esi + 0x5d8], ebp
mov dword [esi + 0x5dc], ebp
mov dword [esi + 0x5e0], ebp
mov dword [esi + 0x5e4], ebp
mov dword [esi + 0x5e8], ebp
mov dword [esi + 0x5ec], edx
jmp 0x40a73a
mov eax, dword [esi + 0x8c]
mov dword [esi + 0x5d8], ebp
mov dword [esi + 0x5dc], ebp
mov dword [esi + 0x5e0], ebp
mov dword [esi + 0x5e4], ebp
mov dword [esi + 0x5e8], ebp
mov dword [esi + 0x5ec], edx
mov ecx, dword [eax + 0x7f8]
cmp ecx, edx
jne 0x40a729
mov eax, dword [eax + 0x82c]
cmp eax, edx
je 0x40a707
cmp dword [eax + 0x2c], edx
jg 0x40a729
mov eax, dword [esi + 0x5550]
cmp eax, ebp
jne 0x40a71f
mov dword [esi + 0x5dc], edx
mov dword [esi + 0x5e4], edx
jmp 0x40a72e
cmp eax, 2
je 0x40a72e
cmp eax, 3
jmp 0x40a72c
cmp ecx, 0x26
jne 0x40a73a
mov dword [esi + 0x5d8], edx
mov dword [esi + 0x5e8], edx
mov ebx, 0xfffffffc
lea edx, [ebx + 0x5e]
xor eax, eax
lea edi, [esi + 0x5d8]
lea ebx, [ebx]
mov ecx, dword [edi]
test ecx, ecx
jne 0x40a762
lea ecx, [edx + eax]
mov dword [esi + ecx*4], 2
jmp 0x40a792
cmp ecx, 2
jne 0x40a77e
lea ebp, [ebx + 4]
cmp ebp, 8
lea ebp, [ecx - 1]
ja 0x40a77e
lea ecx, [edx + eax]
mov dword [esi + ecx*4], 3
jmp 0x40a792
cmp ecx, 3
jne 0x40a792
cmp ebx, 4
ja 0x40a792
lea ecx, [edx + eax]
mov dword [esi + ecx*4], 4
add eax, ebp
add edi, 4
cmp eax, 6
jl 0x40a750
add ebx, ebp
lea eax, [ebx + 4]
add edx, 6
cmp eax, 9
jl 0x40a742
mov eax, dword [esi + 0x8c]
mov edx, dword [eax + 0x82c]
mov ecx, dword [esi + 0x561c]
mov eax, dword [eax + 0x7f8]
add ecx, dword [edx + 0x20]
test eax, eax
jne 0x40a7d6
mov edx, dword [edx + 0x2c]
imul edx, edx, 0x65
add edx, dword [esi + 0x5550]
jmp 0x40a7e4
mov edx, dword [esi + 0x160]
mov edx, dword [edx + 0x6c]
imul edx, edx, 0x65
add edx, eax
add ecx, edx
lea eax, [esp + 0x14]
call fcn.005a9890
mov edx, esi
call fcn.0041c040
test al, al
je 0x40aa87
mov eax, dword [esi + 0x8c]
mov edx, dword [eax + 0x7f8]
cmp edx, 0x2d
jne 0x40a85f
lea eax, [esp + 0x14]
push eax
lea eax, [edx - 0x2b]
call fcn.005af400
add eax, ebp
push eax
push esi
mov eax, 6
call fcn.00408fc0
lea ecx, [esp + 0x14]
push ecx
mov eax, 3
call fcn.005af400
add eax, ebp
push eax
push esi
mov eax, 7
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
mov eax, 2
call fcn.005af400
add eax, 2
push eax
jmp 0x40aa7c
cmp dword [eax + 0x768], 0
je 0x40a89e
mov ecx, edx
cmp ecx, 0x1e
je 0x40a87f
test ecx, ecx
jne 0x40a89e
mov eax, dword [eax + 0x82c]
cmp dword [eax + 0x24], 0xf
jne 0x40a89e
mov ecx, dword [esi + 0x160]
push 9
push ecx
call fcn.00425da0
mov edx, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x9cc
jmp 0x412890
cmp dword [esi + 0x554c], ebp
jne 0x40aa87
lea eax, [edx - 1]
cmp eax, 4
ja 0x40a8ef
lea ecx, [esp + 0x14]
push ecx
push ebp
push esi
mov eax, 5
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
push ebp
push esi
mov eax, 6
call fcn.00408fc0
lea eax, [esp + 0x14]
push eax
push ebp
push esi
mov eax, 7
call fcn.00408fc0
lea ecx, [esp + 0x14]
push ecx
jmp 0x40aa7a
test edx, edx
je 0x40a945
lea edx, [esp + 0x14]
push edx
push ebp
push esi
mov eax, 4
call fcn.00408fc0
lea eax, [esp + 0x14]
push eax
push ebp
push esi
mov eax, 5
call fcn.00408fc0
lea ecx, [esp + 0x14]
push ecx
push 2
push esi
mov eax, 6
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
push 2
push esi
mov eax, 7
call fcn.00408fc0
lea eax, [esp + 0x14]
push eax
push 3
jmp 0x40aa7c
mov eax, dword [esi + 0x5550]
cmp eax, 0xb
je 0x40aa53
cmp eax, 0xc
je 0x40aa53
cmp eax, 0xd
je 0x40aa53
cmp eax, 0xe
je 0x40aa37
cmp eax, 0x10
je 0x40aa37
cmp eax, 0x12
je 0x40aa37
cmp eax, 0x11
je 0x40a9e7
cmp eax, 0x13
je 0x40a9e7
cmp eax, 0x14
jl 0x40aa87
lea ecx, [esp + 0x14]
push ecx
push ebp
push esi
mov eax, 3
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
push 2
push esi
mov eax, 4
call fcn.00408fc0
lea eax, [esp + 0x14]
push eax
push 2
push esi
mov eax, 5
call fcn.00408fc0
lea ecx, [esp + 0x14]
push ecx
push 2
push esi
mov eax, 6
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
push 3
jmp 0x40a92e
lea ecx, [esp + 0x14]
push ecx
push ebp
push esi
mov eax, 4
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
push 2
push esi
mov eax, 5
call fcn.00408fc0
lea eax, [esp + 0x14]
push eax
push 2
push esi
mov eax, 6
call fcn.00408fc0
lea ecx, [esp + 0x14]
push ecx
push 3
push esi
mov eax, 7
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
push 3
jmp 0x40aa7c
lea eax, [esp + 0x14]
push eax
push ebp
push esi
mov eax, 5
call fcn.00408fc0
lea ecx, [esp + 0x14]
push ecx
push ebp
jmp 0x40a91c
lea ecx, [esp + 0x14]
push ecx
push ebp
push esi
mov eax, 6
call fcn.00408fc0
lea edx, [esp + 0x14]
push edx
push ebp
push esi
mov eax, 7
call fcn.00408fc0
lea eax, [esp + 0x14]
push eax
push 2
push esi
mov eax, 8
call fcn.00408fc0
mov edx, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x9cc
jmp 0x412890
sub esp, 0xdc
push esi
push edi
xor edi, edi
lea esi, [esp + 8]
mov dword [esp + 8], edi
call fcn.0041cad0
test al, al
je 0x4128e4
jmp 0x4128b0
mov eax, dword [esp + 8]
cmp dword [eax + 8], 1
jne 0x4128c1
mov dword [esp + edi*4 + 0xc], eax
add edi, 1
lea esi, [esp + 8]
call fcn.0041cad0
test al, al
jne 0x4128b0
test edi, edi
je 0x4128e4
mov eax, edi
call fcn.005af400
mov eax, dword [esp + eax*4 + 0xc]
mov dword [eax + 0xc], 1
pop edi
pop esi
add esp, 0xdc
ret