Function at 0x406af0
Capabilities:
Check for time delay via gettickcount
Encode data using base64
Enumerate pe sections
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x44
mov eax, dword [0x57a040]
xor eax, esp
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [ebx]
mov dword [esp + 0x30], ebx
mov ecx, dword [edi]
cmp eax, ecx
je 0x408e8d
movzx esi, word [ebx + 0x78]
cmp esi, 1
jne 0x406b79
test eax, eax
js 0x408e8d
cmp eax, 0x1194
jge 0x408e8d
mov eax, dword [eax*4 + 0x20a514c]
cmp dword [eax + 4], 3
jne 0x408e8d
movzx edx, word [eax + 0x78]
cmp edx, esi
je 0x406b62
cmp edx, 6
jne 0x408e8d
cmp byte [eax + 0xa], 0
jg 0x408e8d
cmp byte [eax + 0x9c0], 0
jne 0x408e8d
movzx edx, word [edi + 0x78]
cmp edx, 1
jne 0x406bcf
test ecx, ecx
js 0x408e8d
cmp ecx, 0x1194
jge 0x408e8d
mov eax, dword [ecx*4 + 0x20a514c]
cmp dword [eax + 4], 3
jne 0x408e8d
movzx ecx, word [eax + 0x78]
cmp ecx, edx
je 0x406bb8
cmp ecx, 6
jne 0x408e8d
cmp byte [eax + 0xa], 0
jg 0x408e8d
cmp byte [eax + 0x9c0], 0
jne 0x408e8d
mov al, byte [edi + 0x149]
cmp byte [ebx + 0x149], al
jne 0x408e8d
cmp dword [0xbda8c0], 0
jne 0x406bf7
cmp byte [ebx + 0x214], 0
jne 0x408e8d
cmp esi, 1
jne 0x406daa
cmp edx, esi
jne 0x406daa
mov ecx, dword [ebx + 0xda8]
cmp ecx, esi
je 0x406c1e
cmp dword [edi + 0xda8], esi
jne 0x406d90
cmp al, 0x18
jb 0x406c2e
cmp al, 0x1d
jbe 0x406c7e
cmp al, 0x24
je 0x406c7e
cmp al, 0x28
je 0x406c7e
cmp al, 9
je 0x406c7e
cmp al, 0x20
je 0x406c7e
cmp al, 0xb
jb 0x406d90
cmp al, 0x11
jbe 0x406c7e
cmp al, 0x34
je 0x406c7e
cmp al, 0x17
jbe 0x406c7e
cmp al, 0x35
je 0x406c7e
cmp al, 0x2d
jb 0x406c72
cmp al, 0x32
jbe 0x406c7e
cmp al, 0x40
je 0x406c7e
cmp al, 0x41
jb 0x406d90
cmp al, 0x44
jbe 0x406c7e
cmp al, 0x45
jb 0x406d90
cmp al, 0x48
jbe 0x406c7e
cmp al, 0x1e
je 0x406c7e
cmp al, 0x1f
jne 0x406d90
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
cmp ecx, 1
jne 0x406d08
lea eax, [esp + 0x2c]
mov dword [esp + 0x2c], 0x304
push eax
lea eax, [esp + 0x3c]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x40]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x406cbe
cmp dword [eax + 0x10], 0x304
jle 0x406cc0
mov eax, ecx
cmp eax, ecx
jne 0x406cdf
push 0x304
push str.Could_not_find_message__d_
push 0xa9b7bc
call esi
add esp, 0xc
mov eax, 0xa9b7bc
jmp 0x406ce2
add eax, 0x18
push eax
push 0
push 0
push 0
push 0
push 0
push 1
push dword [ebx]
push 0xb90558
call fcn.004cdc70
add esp, 0x24
mov dword [ebx + 0xda8], 0
cmp dword [edi + 0xda8], 1
jne 0x406d90
lea eax, [esp + 0x2c]
mov dword [esp + 0x2c], 0x304
push eax
lea eax, [esp + 0x3c]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x40]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x406d46
cmp dword [eax + 0x10], 0x304
jle 0x406d48
mov eax, ecx
cmp eax, ecx
jne 0x406d67
push 0x304
push str.Could_not_find_message__d_
push 0xa9b7bc
call esi
add esp, 0xc
mov eax, 0xa9b7bc
jmp 0x406d6a
add eax, 0x18
push eax
push 0
push 0
push 0
push 0
push 0
push 1
push dword [edi]
push 0xb90558
call fcn.004cdc70
add esp, 0x24
mov dword [edi + 0xda8], 0
cmp dword [ebx + 0xda8], 1
je 0x408e8d
cmp dword [edi + 0xda8], 1
je 0x408e8d
movzx eax, byte [ebx + 0x149]
movsx esi, word [ebx + 0x144]
movsx edx, word [ebx + 0x146]
imul ecx, eax, 0x15d38
test esi, esi
js 0x406df3
cmp esi, dword [ecx + 0xd2f384]
jge 0x406df3
test edx, edx
js 0x406df3
mov eax, dword [ecx + 0xd2f388]
cmp edx, eax
jge 0x406df3
imul eax, edx
add eax, dword [ecx + 0xd2f380]
mov al, byte [eax + esi]
test al, 1
jne 0x408e8d
mov al, byte [edi + 0x149]
movsx edx, word [edi + 0x144]
mov byte [esp + 0x13], al
movzx eax, al
imul ecx, eax, 0x15d38
movsx eax, word [edi + 0x146]
test edx, edx
js 0x406e42
cmp edx, dword [ecx + 0xd2f384]
jge 0x406e42
test eax, eax
js 0x406e42
mov esi, dword [ecx + 0xd2f388]
cmp eax, esi
jge 0x406e42
imul eax, esi
add eax, dword [ecx + 0xd2f380]
mov al, byte [eax + edx]
test al, 1
jne 0x408e8d
push dword [ebx]
call fcn.004748f0
test eax, eax
jne 0x408e8d
push dword [edi]
call fcn.004748f0
test eax, eax
jne 0x408e8d
cmp dword [0x5d8fb0], 7
mov ecx, 0x115
lea edx, [ecx + 6]
je 0x406ea6
cmp word [edi + 0x78], 2
jne 0x406ea6
cmp byte [esp + 0x13], 0x1e
jne 0x406ea6
movzx eax, word [edi + 0xcc]
cmp ax, cx
je 0x408e8d
cmp ax, dx
je 0x408e8d
mov ecx, 0x120
cmp ax, cx
je 0x408e8d
mov eax, dword [0x61f4ac]
cmp eax, 3
je 0x406eb5
cmp eax, 5
jne 0x406ec9
cmp word [edi + 0x78], 2
jne 0x406ec9
cmp byte [edi + 0x149], 0x22
je 0x408e8d
cmp dword [ebx + 0x28c], 0
jle 0x406f0f
mov eax, dword [ebx + 0x290]
test eax, eax
je 0x406f0f
cmp byte [eax + 0x591], 0
je 0x406f0f
mov al, byte [eax + 0x592]
cmp al, 1
jne 0x406f00
mov eax, dword [0xbf8c98]
cmp dword [eax + 0x60], 0
je 0x407353
jmp 0x406f0f
test al, al
jne 0x406f0f
cmp word [edi + 0x78], 2
je 0x408e8d
movzx eax, word [edi + 0x78]
cmp eax, 3
je 0x408e8d
cmp byte [edi + 0x7a], 0
je 0x408e8d
cmp dword [edi + 0x200], 2
jne 0x408e8d
cmp byte [edi + 0x214], 0
jne 0x408e8d
cmp eax, 6
je 0x408e8d
cmp eax, 2
jne 0x406fa6
movzx eax, word [edi + 0x316]
mov ecx, eax
cmp ax, 0x33
jl 0x406f67
cmp cx, 0x3a
jle 0x408e8d
movzx eax, word [edi + 0xcc]
cmp eax, 0x64
jb 0x406f7c
cmp eax, 0x6e
jbe 0x408e8d
mov ecx, 0x20b
cmp ax, cx
je 0x408e8d
mov ecx, 0xdd
cmp ax, cx
je 0x408e8d
mov ecx, 0xde
cmp ax, cx
je 0x408e8d
cmp word [ebx + 0x78], 1
jne 0x406fcd
cmp word [edi + 0x78], 2
jne 0x406fcd
mov eax, dword [ebx + 0x2a8]
test eax, eax
js 0x406fcd
cmp eax, 0x1194
jge 0x406fcd
cmp eax, dword [edi]
je 0x408e8d
mov edx, dword [edi + 0x2a8]
mov ecx, dword [ebx]
cmp edx, ecx
je 0x408e8d
mov eax, dword [ebx + 0x2a8]
cmp dword [edi], eax
je 0x408e8d
test eax, eax
js 0x406ffe
cmp eax, 0x1194
jge 0x406ffe
cmp edx, eax
je 0x408e8d
cmp word [ebx + 0x78], 2
jne 0x407011
test eax, eax
js 0x407011
cmp eax, 0x1194
cmovl ecx, eax
cmp word [edi + 0x78], 2
mov eax, dword [edi]
jne 0x40702d
mov edx, dword [edi + 0x2a8]
test edx, edx
js 0x40702d
cmp edx, 0x1194
cmovl eax, edx
push dword [eax*4 + 0x20a514c]
push dword [ecx*4 + 0x20a514c]
mov ecx, 0x57ac4c
call fcn.0040a0a0
test al, al
je 0x408e8d
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x407059
xor edx, edx
jmp 0x40705d
movzx edx, word [eax + 6]
mov eax, dword [0xbecdb8]
mov ecx, dword [0xbecdbc]
mov dword [esp + 0x28], edx
cmp eax, ecx
je 0x4070b9
cmp dword [eax], edx
jne 0x40709b
mov esi, dword [eax + 4]
cmp esi, 0xffffffff
je 0x407087
movzx ecx, byte [ebx + 0x149]
cmp esi, ecx
jne 0x407095
movzx ecx, word [edi + 0x78]
cmp ecx, 2
je 0x4070aa
cmp ecx, 1
je 0x4070a4
mov ecx, dword [0xbecdbc]
add eax, 0x10
cmp eax, ecx
jne 0x407070
jmp 0x4070b9
cmp dword [eax + 0xc], 0
jmp 0x4070ae
cmp dword [eax + 8], 0
setne al
test al, al
je 0x408e8d
mov esi, dword [ebp + 0x1c]
mov dword [esp + 0x14], esi
test esi, esi
jne 0x4070d7
cmp edx, 0x4c
je 0x4070d7
push ebx
call fcn.00408ec0
test al, al
je 0x408e8d
cmp word [ebx + 0x78], 1
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
jne 0x407114
call eax
mov dword [ebx + 0x72c], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x730], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x734], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x738], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp word [edi + 0x78], 1
jne 0x407147
call eax
mov dword [edi + 0x72c], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [edi + 0x730], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [edi + 0x734], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [edi + 0x738], eax
mov eax, dword [ebx + 0x2a8]
test eax, eax
js 0x407161
cmp eax, 0x1194
jge 0x407161
mov edx, dword [edi]
mov ecx, ebx
call fcn.004bd4f0
cmp word [ebx + 0x78], 1
jne 0x4071f1
mov eax, dword [ebx]
mov edx, dword [edi]
lea ecx, [eax + eax*4]
mov eax, dword [ecx*8 + 0xcd73c4]
test eax, eax
js 0x40719d
cmp eax, 0x1194
jge 0x40719d
mov eax, dword [eax*4 + 0x20a514c]
cmp word [eax + 0xcc], 4
jne 0x40719d
mov dword [ecx*8 + 0xcd73c8], edx
cmp word [ebx + 0x78], 1
jne 0x4071f1
cmp word [edi + 0x78], 1
jne 0x4071f1
mov ecx, dword [ebx + 0x3f4]
test ecx, ecx
js 0x4071ed
cmp ecx, 0x1194
jge 0x4071ed
mov eax, dword [edi + 0x3f4]
test eax, eax
js 0x4071ed
cmp eax, 0x1194
jge 0x4071ed
cmp ecx, dword [edi]
jne 0x4071ed
cmp eax, dword [ebx]
jne 0x4071ed
mov byte [esp + 0x2c], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x3fc], eax
mov eax, dword [esp + 0x2c]
jmp 0x407200
xor al, al
jmp 0x407200
xor al, al
xor ecx, ecx
cmp word [ebx + 0x78], 1
movzx eax, al
cmove eax, ecx
cmp word [edi + 0x78], 1
jne 0x407217
test al, al
je 0x407217
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [edi + 0x3fc], eax
push 0x12
push ebx
call fcn.004774b0
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop word [eax + eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x40723c
cmp dl, 0x22
je 0x407247
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x407230
jmp 0x407252
cmp dword [esp + 0x18], 0
je 0x407314
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop dword [eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x40726c
cmp dl, 0x22
je 0x407277
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x407260
jmp 0x407283
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x407343
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop
mov dl, byte [eax]
cmp dl, 0xff
je 0x40729c
cmp dl, 0x3b
je 0x4072a7
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x407290
jmp 0x4072ae
cmp dword [esp + 0x18], 0
je 0x407314
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop dword [eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x4072cc
cmp dl, 0x3c
je 0x40733b
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x4072c0
mov ecx, dword [esp + 0x18]
cmp word [edi + 0x78], 2
jne 0x407403
mov eax, 0xc8
cmp word [edi + 0xcc], ax
jne 0x407381
mov eax, dword [ebx]
mov edx, dword [eax*4 + 0x20a514c]
test ecx, ecx
jne 0x407369
cmp byte [edx + 0x7a], cl
je 0x407314
push 2
mov ecx, edi
call fcn.00524d10
add esp, 4
push dword [ebp + 0x20]
movzx eax, byte [ebp + 0x14]
push eax
push 0
push edi
push ebx
call fcn.0040aad0
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x40]
xor ecx, esp
call fcn.00529f01
mov esp, ebp
pop ebp
ret 0x20
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x4072d9
push dword [ebp + 0x20]
movzx eax, byte [ebp + 0x14]
push eax
push ecx
push edi
push ebx
call fcn.0040aad0
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x40]
xor ecx, esp
call fcn.00529f01
mov esp, ebp
pop ebp
ret 0x20
cmp byte [edx + 0x7a], 0
je 0x407343
push 3
mov ecx, edi
call fcn.00524d10
mov ecx, dword [esp + 0x1c]
add esp, 4
jmp 0x407343
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop dword [eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x40739c
cmp dl, 0x3f
je 0x4073d5
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x407390
mov eax, dword [esp + 0x28]
mov ecx, dword [edi + 0x624]
xor edx, edx
add ecx, 4
mov bl, byte [ecx]
mov byte [esp + 0x13], bl
cmp bl, 0xff
mov ebx, dword [esp + 0x30]
je 0x4073ca
cmp byte [esp + 0x13], 0x40
je 0x4073ee
inc edx
add ecx, 0x1c
cmp edx, 0x20
jl 0x4073b4
jmp 0x4073f2
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x4073a9
push dword [ebp + 0x20]
movzx eax, byte [ebp + 0x14]
push eax
push dword [esp + 0x20]
jmp 0x40734c
test eax, eax
jne 0x4073dd
cmp dword [edi + 0xe20], 0
jle 0x407403
cmp dword [edi + 0xe1c], eax
je 0x4073dd
mov byte [esp + 0x13], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x34], 0x2000
test esi, esi
jne 0x407fd5
cmp word [ebx + 0x78], 1
jne 0x407437
cmp word [edi + 0x78], 1
jne 0x407437
movzx eax, byte [ebp + 0x14]
jmp 0x407532
mov esi, dword [ebx + 0x794]
add esi, dword [ebx + 0x2f4]
mov ecx, dword [ebx + 0x834]
movzx eax, byte [ebp + 0x14]
mov dword [esp + 0x1c], eax
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
mov ecx, dword [ebx + 0x864]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, eax
mov eax, 0xae147ae1
imul ecx, esi
imul ecx
mov ecx, dword [edi + 0x844]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, eax
mov eax, 0
cmovs esi, eax
mov eax, dword [edi + 0x7a4]
add eax, dword [edi + 0x308]
imul ecx, eax
mov dword [esp + 0x14], eax
mov eax, 0x51eb851f
imul ecx
mov ecx, dword [edi + 0x874]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x14]
add edx, eax
mov eax, 0xae147ae1
imul ecx, edx
mov dword [esp + 0x14], edx
imul ecx
mov ecx, dword [esp + 0x14]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add ecx, eax
mov eax, 0
cmovs ecx, eax
mov dword [esp + 0x14], ecx
cmp esi, ecx
jge 0x407516
mov byte [esp + 0x13], 1
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, 5
jl 0x40752e
push dword [ebp + 0x20]
push dword [esp + 0x20]
push dword [esp + 0x20]
jmp 0x40734c
call fcn.00526930
test esi, esi
cdq
mov ecx, 1
cmove esi, ecx
idiv esi
cmp edx, dword [esp + 0x14]
jl 0x407506
mov eax, dword [esp + 0x1c]
cmp word [ebx + 0x78], 1
jne 0x40755d
cmp word [edi + 0x78], 1
jne 0x40755d
lea ecx, [esp + 0x13]
push ecx
mov ecx, dword [ebp + 0x20]
push ecx
push eax
push dword [esp + 0x24]
push edi
push ebx
call fcn.0040aba0
test al, al
je 0x407353
mov eax, dword [edi + 0x7a0]
sub eax, dword [edi + 0x824]
add eax, dword [edi + 0x300]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x14]
push eax
push dword [ebx]
call fcn.0050fd90
cmp word [ebx + 0x78], 1
jne 0x407599
cmp word [edi + 0x78], 1
jne 0x407599
mov esi, dword [esp + 0x14]
add esi, dword [edi + 0x920]
jmp 0x40759d
mov esi, dword [esp + 0x14]
cmp dword [edi + 0xdec], 0
jle 0x4075ac
add esi, dword [edi + 0xde8]
mov eax, dword [edi + 0x840]
test eax, eax
jle 0x4075ce
mov ecx, esi
imul ecx, eax
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, eax
mov eax, dword [edi + 0x870]
test eax, eax
jle 0x4075f0
mov ecx, esi
imul ecx, eax
mov eax, 0xae147ae1
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, eax
cmp word [edi + 0x78], 1
jne 0x40760b
imul ecx, esi, 0x32
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
mov eax, dword [ebx + 0x898]
sub eax, dword [edi + 0x8b4]
add eax, dword [ebx + 0x7f4]
cmp edx, eax
jge 0x407638
mov dword [esp + 0x24], 1
xor esi, esi
xor eax, eax
test esi, esi
cmovs esi, eax
mov eax, dword [esp + 0x28]
cmp eax, 0x4c
jne 0x407664
push esi
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x20]
push edi
push ebx
call fcn.0040c770
mov esi, eax
mov dword [esp + 0x1c], esi
jmp 0x40771f
movzx ecx, word [ebx + 0xcc]
cmp ecx, 5
jne 0x4076a1
cmp eax, 0xdf
je 0x407685
cmp eax, 0xe0
je 0x407685
cmp eax, 0xe1
jne 0x4076ab
push esi
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x20]
push edi
push ebx
call fcn.0040c410
mov esi, eax
mov dword [esp + 0x1c], esi
jmp 0x40771f
test cx, cx
je 0x4076ab
cmp ecx, 3
jne 0x407708
test eax, eax
je 0x407708
cmp eax, 0x13
je 0x407708
cmp eax, 0x14
je 0x407708
cmp eax, 0x15
je 0x407708
cmp eax, 0x16
je 0x407708
cmp eax, 0x17
je 0x407708
cmp eax, 0x29
je 0x407708
cmp eax, 0x2f
je 0x407708
cmp eax, 0x37
je 0x407708
cmp eax, 0x38
je 0x407708
cmp eax, 0x39
je 0x407708
cmp eax, 0xec
je 0x407708
cmp eax, 0x158
je 0x407708
push esi
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x20]
push edi
push ebx
call fcn.0040c090
mov esi, eax
mov dword [esp + 0x1c], esi
jmp 0x40771f
push esi
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x20]
push edi
push ebx
call fcn.0040bb60
mov esi, eax
mov dword [esp + 0x1c], eax
test esi, esi
jle 0x40782b
cmp word [ebx + 0x78], 1
jne 0x40782b
mov eax, dword [ebx + 0x624]
xor ecx, ecx
add eax, 4
nop dword [eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x407750
cmp dl, 0x64
je 0x40782b
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x407740
mov dword [esp + 0x2c], 0
xor esi, esi
mov ecx, dword [ebx + 0x390]
add ecx, esi
movzx eax, word [ecx + 4]
mov edx, eax
test ax, ax
js case.default.0x40779b
cmp dx, word [esp + 0x34]
jge case.default.0x40779b
cwde
cdq
and edx, 0x1ff
add eax, edx
sar eax, 9
cmp eax, 5
ja case.default.0x40779b
jmp dword [eax*4 + 0x408ea4]
xor eax, eax
jmp 0x4077b8
mov eax, 1
jmp 0x4077b8
xor eax, eax
cmp byte [ecx + 8], al
setne al
add eax, 2
push eax
mov edx, ebx
mov dword [esp + 0x18], edi
mov eax, edi
mov ebx, 0x300
push dword [ebx + eax]
push dword [edx]
call fcn.004962d0
mov ebx, dword [esp + 0x30]
test al, al
je case.default.0x40779b
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x38]
mov ecx, dword [ebx]
mov byte [esp + 0x3b], al
mov eax, dword [ebx + 0x390]
push 6
mov word [esp + 0x3c], 0x6c1
mov byte [esp + 0x3e], 0x2a
cvttss2si eax, dword [eax + esi + 0x20]
mov byte [esp + 0x41], 0
mov byte [esp + 0x40], al
call fcn.00526480
add esp, 4
inc dword [esp + 0x2c]
add esi, 0x10c
cmp esi, 0x218
jl 0x407763
mov esi, dword [esp + 0x1c]
cmp byte [esp + 0x13], 0
je 0x40784c
mov ecx, esi
mov eax, 0x51eb851f
shl ecx, 4
sub ecx, esi
add ecx, ecx
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
mov ecx, dword [edi + 0x934]
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
mov ecx, dword [edi + 0x938]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
mov ecx, dword [edi + 0x93c]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
mov ecx, dword [edi + 0x940]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
mov ecx, dword [edi + 0x944]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
mov ecx, dword [edi + 0x948]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [edi + 0x7cc]
sub esi, eax
mov dword [ebp + 0x1c], esi
test edx, edx
jle 0x40791c
mov ecx, esi
mov eax, 0x51eb851f
imul ecx, edx
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov dword [ebp + 0x1c], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
imul eax, dword [0xbdbf48], 0x3e8
sub ecx, dword [edi + 0x930]
cmp ecx, eax
jae 0x407959
mov ecx, dword [edi + 0x92c]
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
mov ecx, esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
mov dword [ebp + 0x1c], ecx
lea eax, [ebp + 0x1c]
push eax
push edi
push ebx
call fcn.00409090
lea eax, [ebp + 0x1c]
push eax
push edi
push ebx
call fcn.00409600
movsx ecx, word [ebx + 0xd0]
mov eax, 0x66666667
add ecx, dword [ebx + 0x608]
mov esi, dword [ebp + 0x1c]
imul ecx
mov ecx, 1
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 1
cmovl eax, ecx
cmp esi, eax
cmovl esi, eax
push esi
push edi
mov dword [esp + 0x1c], esi
call fcn.00409950
cmp word [edi + 0x78], 1
jne 0x407ad3
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
mov dl, byte [eax]
cmp dl, 0xff
je 0x4079d1
cmp dl, 0x64
je 0x407ad3
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x4079c1
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov edx, dword [edi + 0x11bc]
add edx, ecx
mov dword [esp + 0x2c], edx
movzx eax, word [edx + 4]
mov esi, eax
mov dword [esp + 0x34], esi
test ax, ax
js 0x407ab4
mov eax, 0x2000
cmp si, ax
jge 0x407ab4
movss xmm0, dword [edx + 0x20]
comiss xmm0, dword [0x56a714]
jbe 0x407ab4
movzx eax, byte [edi + 0x149]
movsx edx, word [edi + 0x146]
imul ecx, eax, 0x15d38
movsx eax, word [edi + 0x144]
test eax, eax
js 0x407a6b
cmp eax, dword [ecx + 0xd2f384]
jge 0x407a6b
test edx, edx
js 0x407a6b
mov eax, dword [ecx + 0xd2f388]
cmp edx, eax
jge 0x407a6b
imul eax, edx
add eax, dword [ecx + 0xd2f380]
movsx ecx, word [edi + 0x144]
mov al, byte [eax + ecx]
jmp 0x407a6d
mov al, 4
mov ecx, dword [esp + 0x2c]
not al
and eax, 1
push eax
push dword [edi]
call fcn.00496670
mov ecx, dword [esp + 0x1c]
test al, al
je 0x407ab4
mov eax, dword [edi + 0x11bc]
push 6
mov dword [esp + 0x3c], 0xb4e06c1
mov byte [esp + 0x40], bl
cvttss2si eax, dword [ecx + eax + 0x20]
mov byte [esp + 0x41], al
lea eax, [esp + 0x3c]
push eax
push dword [edi]
call fcn.005192f0
mov ecx, dword [esp + 0x1c]
add ecx, 0x10c
inc ebx
mov dword [esp + 0x1c], ecx
cmp ecx, 0x10c0
jl 0x4079e2
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
cmp ecx, 0x13
je 0x407e75
cmp ecx, 0x14
je 0x407e75
cmp ecx, 0x15
je 0x407e75
cmp ecx, 0x16
je 0x407e75
cmp ecx, 0x17
je 0x407e75
cmp ecx, 0x29
je 0x407e75
cmp ecx, 0x2a
je 0x407e75
cmp ecx, 0x2b
je 0x407e75
cmp ecx, 0x2c
je 0x407e75
cmp ecx, 0x2e
je 0x407e75
cmp ecx, 0x2f
je 0x407e46
cmp ecx, 0x31
je 0x407e75
cmp ecx, 0x33
je 0x407e75
cmp ecx, 0x34
je 0x407e75
cmp ecx, 0x37
je 0x407e75
cmp ecx, 0x38
je 0x407e75
cmp ecx, 0x39
je 0x407e75
cmp ecx, 0xe8
je 0x407e75
cmp ecx, 0xec
je 0x407e75
cmp ecx, 0x10d
je 0x407e75
cmp ecx, 0x158
je 0x407e75
cmp ecx, 0x3c
je 0x407e33
cmp ecx, 0x3d
je 0x407e33
cmp ecx, 0x3e
je 0x407e33
cmp ecx, 0x41
je 0x407e33
cmp ecx, 0x4a
je 0x407e33
cmp ecx, 0x4e
je 0x407e33
cmp ecx, 0xee
je 0x407e33
cmp ecx, 0x4c
jne 0x407c2b
movzx eax, word [ebx + 0xd0]
mov ecx, 0x12c
cmp ax, cx
jle 0x407c09
movsx ecx, ax
add ecx, 0xfffffed4
add ecx, dword [ebx + 0x608]
jmp 0x407c0b
xor ecx, ecx
mov eax, 0x66666667
imul ecx
mov eax, 0x51eb851f
sar edx, 1
mov ecx, edx
add edx, 0xc8
shr ecx, 0x1f
add ecx, edx
imul ecx, esi
jmp 0x407c82
cmp ecx, 0xd7
jne 0x407c6f
mov eax, dword [ebp + 0x20]
cmp eax, 2
jne 0x407c40
lea edx, [eax + 0x44]
jmp 0x407c55
cmp eax, 3
mov dword [esp + 0x34], 0x32
mov edx, 0x64
cmove edx, dword [esp + 0x34]
imul edx, esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [esp + 0x14], esi
jmp 0x407c96
cmp ecx, 0xfa
jne 0x407cd5
mov eax, 0x51eb851f
imul ecx, esi, 0xc8
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x28]
mov eax, dword [ebp + 0x20]
test eax, eax
jle 0x407eed
mov dword [esp + 0x2c], 0x20
mov edx, 0x10
cmp ecx, 0x105
je 0x407e96
cmp ecx, 0x107
je 0x407e96
mov ax, word [esp + 0x24]
mov word [esp + 0x1c], ax
jmp 0x407eb8
cmp ecx, 0xfb
jne 0x407cea
imul ecx, esi, 0xdc
mov eax, 0x51eb851f
jmp 0x407c82
cmp ecx, 0xfc
jne 0x407cff
imul ecx, esi, 0xe6
mov eax, 0x51eb851f
jmp 0x407c82
cmp ecx, 0xfd
jne 0x407d17
imul ecx, esi, 0xfa
mov eax, 0x51eb851f
jmp 0x407c82
cmp ecx, 0x104
je 0x407e20
cmp ecx, 0x105
je 0x407e20
cmp ecx, 0x10e
je 0x407e20
cmp ecx, 0x106
jne 0x407d6a
mov eax, dword [ebx + 0x11c]
add eax, dword [ebx + 0xf0]
cdq
idiv dword [0xbdb5a8]
lea ecx, [esi + eax]
mov eax, 0x51eb851f
imul ecx, dword [ebx + 0x2e8]
jmp 0x407c82
cmp ecx, 0x107
jne 0x407db1
mov eax, dword [ebx + 0x120]
add eax, dword [ebx + 0xf4]
cdq
idiv dword [0xbdb5ac]
mov ecx, eax
mov eax, dword [ebx + 0x118]
add eax, dword [ebx + 0xec]
cdq
idiv dword [0xbdb5a4]
add ecx, dword [esp + 0x14]
add ecx, eax
mov eax, 0x51eb851f
imul ecx, dword [ebx + 0x2f0]
jmp 0x407c82
cmp ecx, 0x108
jne 0x407de0
mov eax, dword [ebx + 0x120]
add eax, dword [ebx + 0xf4]
cdq
idiv dword [0xbdb5ac]
lea ecx, [esi + eax]
mov eax, 0x51eb851f
imul ecx, dword [ebx + 0x2ec]
jmp 0x407c82
cmp ecx, 0x109
jne 0x407c96
mov ecx, dword [ebx + 0x2ec]
mov eax, 0x51eb851f
imul ecx, esi
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
cmp word [edi + 0x78], 1
mov dword [esp + 0x14], esi
jne 0x407c92
lea eax, [esi + 0x64]
lea esi, [eax + eax*2]
jmp 0x407c8e
mov ecx, dword [ebx + 0x2e8]
mov eax, 0x51eb851f
imul ecx, esi
jmp 0x407c82
mov ecx, dword [ebx + 0x2e4]
mov eax, 0x51eb851f
imul ecx, esi
jmp 0x407c82
mov eax, dword [ebx + 0x390]
mov edx, 0x1a02
movzx eax, word [eax + 0x864]
cmp ax, dx
je 0x407e75
mov edx, 0x1a03
cmp ax, dx
je 0x407e75
mov edx, 0x1a25
cmp ax, dx
jne 0x407c96
cmp word [ebx + 0xcc], 1
mov eax, 0x51eb851f
jne 0x407c7c
mov ecx, dword [ebx + 0x2e0]
imul ecx, esi
jmp 0x407c82
mov bx, word [esp + 0x24]
test al, 1
mov eax, edx
cmove eax, dword [esp + 0x2c]
or bx, ax
mov ax, bx
mov word [esp + 0x1c], bx
mov ebx, dword [esp + 0x30]
mov word [esp + 0x24], ax
cmp ecx, 0x104
je 0x407ed8
cmp ecx, 0x106
je 0x407ed8
cmp ecx, 0x108
je 0x407ed8
cmp ecx, 0x10e
jne 0x407ef7
mov ecx, dword [ebp + 0x20]
test cl, 3
cmove edx, dword [esp + 0x2c]
or ax, dx
mov word [esp + 0x24], ax
jmp 0x407ef2
mov ax, word [esp + 0x24]
mov word [esp + 0x1c], ax
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
mov eax, dword [ebx + 0x890]
sub eax, dword [edi + 0x8b0]
cmp edx, eax
jge 0x407f29
or dword [esp + 0x24], 0x40
add esi, esi
mov ax, word [esp + 0x24]
mov dword [esp + 0x14], esi
mov word [esp + 0x1c], ax
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
mov eax, dword [esp + 0x24]
cmp edx, dword [ebx + 0x894]
jge 0x407f5a
or eax, 0x100
lea esi, [esi + esi*2]
mov cx, ax
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], esi
mov word [esp + 0x1c], cx
cmp byte [ebp + 0x24], 0
je 0x408020
or eax, 0x80
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x120]
add eax, dword [ebx + 0x118]
add eax, dword [ebx + 0x114]
add eax, dword [ebx + 0xf4]
add eax, dword [ebx + 0xec]
add eax, dword [ebx + 0xe8]
cdq
idiv dword [0xbdb62c]
push 0x159
imul eax, dword [0xbdb630]
push ebx
lea esi, [eax + esi*2]
call fcn.004b6100
mov ecx, eax
mov dword [esp + 0x28], 0x3b
imul ecx, esi
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, esi
mov dword [esp + 0x14], eax
mov esi, eax
jmp 0x408016
cmp dword [esp + 0x28], 0x4f
je 0x408016
cmp word [ebx + 0x78], 1
mov dword [esp + 0x24], 4
jne 0x407ff8
cmp word [edi + 0x78], 1
mov ecx, dword [0xbdb47c]
je 0x407ffe
mov ecx, dword [0xbdb480]
imul ecx, esi
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [esp + 0x14], esi
mov ax, word [esp + 0x24]
mov word [esp + 0x1c], ax
cmp word [ebx + 0x78], 1
jne 0x4081e8
cmp word [edi + 0x78], 1
mov eax, 0x51eb851f
jne 0x4081b3
imul esi, dword [0xbdb474]
imul esi
movzx eax, word [ebx + 0xcc]
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, dword [eax*4 + 0xbdb484]
mov eax, 0x51eb851f
imul ecx
movzx ecx, word [edi + 0xcc]
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
movzx edx, word [ebx + 0xcc]
lea eax, [edx*8]
sub eax, edx
add ecx, eax
mov eax, 0x51eb851f
imul esi, dword [ecx*4 + 0xbdb4bc]
mov ecx, dword [ebx + 0x3f4]
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
test ecx, ecx
js 0x4080d7
cmp ecx, 0x1194
jge 0x4080d7
mov eax, dword [edi + 0x3f4]
test eax, eax
js 0x4080d7
cmp eax, 0x1194
jge 0x4080d7
cmp ecx, dword [edi]
jne 0x4080d7
cmp eax, dword [ebx]
jne 0x4080d7
imul esi, dword [0xbdb454]
jmp 0x4081a0
push edi
push ebx
call fcn.00485270
test al, al
je 0x4080ee
imul esi, dword [0xbdb458]
jmp 0x4081a0
mov al, byte [ebx + 0x149]
cmp al, 0x28
jne 0x40810c
cmp byte [edi + 0x149], al
jne 0x408136
imul esi, dword [0xbdb45c]
jmp 0x4081a0
cmp al, 0x12
jb 0x408136
cmp al, 0x17
jbe 0x408118
cmp al, 0x35
jne 0x408136
mov cl, byte [edi + 0x149]
cmp cl, 0x12
jb 0x408136
cmp cl, 0x17
jbe 0x40812d
cmp cl, 0x35
jne 0x408136
imul esi, dword [0xbdb460]
jmp 0x4081a0
cmp al, 0x2d
jb 0x408157
cmp al, 0x32
ja 0x408157
mov cl, byte [edi + 0x149]
cmp cl, 0x2d
jb 0x408157
cmp cl, 0x32
ja 0x408157
imul esi, dword [0xbdb464]
jmp 0x4081a0
cmp dword [0x5d8fb0], 7
jne 0x4081ec
cmp al, 0x1e
jne 0x4081ec
cmp byte [edi + 0x149], al
jne 0x4081ec
mov cl, byte [ebx + 0xdca]
test cl, cl
je 0x408199
mov al, byte [edi + 0xdca]
test al, al
je 0x408199
cmp cl, al
jne 0x408199
imul esi, dword [0xbdb46c]
jmp 0x4081a0
imul esi, dword [0xbdb468]
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jmp 0x4081ec
imul esi, dword [0xbdb478]
imul esi
movzx eax, word [ebx + 0xcc]
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, dword [eax*4 + 0xbdb4a0]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jmp 0x4081ec
mov esi, dword [esp + 0x14]
cmp word [ebx + 0x78], 1
jne 0x40828f
cmp word [edi + 0x78], 2
jne 0x40828f
movzx eax, word [edi + 0xcc]
mov ecx, 0x115
cmp ax, cx
je 0x408221
mov ecx, 0x11b
cmp ax, cx
jne 0x40828f
mov eax, dword [ebx + 0x624]
xor ecx, ecx
add eax, 4
nop dword [eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x40823c
cmp dl, 0xa
je 0x408247
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x408230
jmp 0x408260
lea ecx, [esi + esi*4]
mov eax, 0x51eb851f
shl ecx, 2
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, eax
imul esi, dword [0xbdb470]
mov eax, 0x51eb851f
xor ecx, ecx
imul esi
mov eax, dword [ebx + 0xdd8]
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
cmp eax, 0x64
lea edx, [eax + esi]
cmovle ecx, edx
mov dword [ebx + 0xdd8], ecx
xor eax, eax
test esi, esi
cmovs esi, eax
cmp word [ebx + 0x78], 2
mov dword [esp + 0x14], esi
jne 0x408378
cmp word [edi + 0x78], 1
jne 0x408378
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.0040cbd0
mov eax, dword [0x6400c8]
cmp eax, dword [0x6400cc]
je 0x40835b
mov edx, dword [eax]
cmp edx, 0xffffffff
je 0x4082e2
movzx ecx, byte [edi + 0x149]
cmp edx, ecx
jne 0x40834c
mov edx, dword [eax + 4]
cmp edx, 0xffffffff
je 0x4082f5
movsx ecx, word [edi + 0xd0]
cmp edx, ecx
jg 0x40834c
mov edx, dword [eax + 8]
cmp edx, 0xffffffff
je 0x408308
movsx ecx, word [edi + 0xd0]
cmp edx, ecx
jl 0x40834c
mov ecx, dword [eax + 0xc]
cmp ecx, 0xffffffff
je 0x408318
cmp ecx, dword [edi + 0x73c]
jg 0x40834c
mov ecx, dword [eax + 0x10]
cmp ecx, 0xffffffff
je 0x408328
cmp ecx, dword [edi + 0x73c]
jl 0x40834c
mov ecx, dword [eax + 0x14]
mov edx, dword [esp + 0x2c]
cmp ecx, 0xffffffff
je 0x408338
cmp ecx, edx
jg 0x40834c
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x4086ee
cmp ecx, edx
jge 0x4086ee
add eax, 0x20
cmp eax, dword [0x6400cc]
jne 0x4082d0
mov ecx, 0x64
imul ecx, esi
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [esp + 0x14], esi
cmp word [ebx + 0x78], 1
jne 0x408784
cmp word [edi + 0x78], 2
jne 0x40846d
mov eax, dword [0x6400d4]
cmp eax, dword [0x6400d8]
je 0x408450
nop
mov edx, dword [eax]
cmp edx, 0xffffffff
je 0x4083b6
movzx ecx, byte [ebx + 0x149]
cmp edx, ecx
jne 0x408441
mov edx, dword [eax + 0x14]
cmp edx, 0xffffffff
je 0x4083cd
movzx ecx, word [edi + 0xcc]
cmp edx, ecx
jne 0x408441
mov edx, dword [eax + 4]
cmp edx, 0xffffffff
je 0x4083e0
movsx ecx, word [ebx + 0xd0]
cmp edx, ecx
jg 0x408441
mov edx, dword [eax + 8]
cmp edx, 0xffffffff
je 0x4083f3
movsx ecx, word [ebx + 0xd0]
cmp edx, ecx
jl 0x408441
mov ecx, dword [eax + 0xc]
cmp ecx, 0xffffffff
je 0x408403
cmp ecx, dword [ebx + 0x73c]
jg 0x408441
mov ecx, dword [eax + 0x10]
cmp ecx, 0xffffffff
je 0x408413
cmp ecx, dword [ebx + 0x73c]
jl 0x408441
mov edx, dword [eax + 0x18]
cmp edx, 0xffffffff
je 0x408426
movsx ecx, word [edi + 0xd0]
cmp edx, ecx
jg 0x408441
mov edx, dword [eax + 0x1c]
cmp edx, 0xffffffff
je 0x4086f6
movsx ecx, word [edi + 0xd0]
cmp edx, ecx
jge 0x4086f6
add eax, 0x24
cmp eax, dword [0x6400d8]
jne 0x4083a0
mov ecx, 0x64
imul ecx, esi
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
cmp word [esp + 0x1c], 4
je 0x408784
call fcn.00526930
cdq
mov esi, 0x64
idiv esi
cmp edx, dword [ebx + 0x990]
jge 0x4084c1
movd xmm0, dword [ebx + 0x14c]
or dl, 0xff
push dword [ebx + 0x154]
mov ecx, dword [ebx]
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ebx + 0x100]
cvttss2si eax, xmm0
movss dword [ebx + 0xfc], xmm0
push eax
call fcn.004e96c0
add esp, 8
call fcn.00526930
cdq
idiv esi
cmp edx, dword [ebx + 0x998]
jge 0x4084fa
mov eax, dword [ebx + 0x158]
or dl, 0xff
add eax, dword [ebx + 0x15c]
mov ecx, dword [ebx]
push eax
mov dword [ebx + 0x154], eax
cvttss2si eax, dword [ebx + 0xfc]
push eax
call fcn.004e96c0
add esp, 8
call fcn.00526930
cdq
idiv esi
cmp edx, dword [ebx + 0x994]
jge 0x40853a
movd xmm0, dword [ebx + 0x150]
push dword [ebx + 0x128]
mov ecx, dword [ebx]
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ebx + 0x10c]
cvttss2si eax, xmm0
movss dword [ebx + 0x108], xmm0
push eax
call fcn.004e9750
add esp, 8
call fcn.00526930
cdq
idiv esi
cmp edx, dword [ebx + 0x99c]
jge 0x408570
mov eax, dword [ebx + 0x12c]
add eax, dword [ebx + 0x130]
mov ecx, dword [ebx]
push eax
mov dword [ebx + 0x128], eax
cvttss2si eax, dword [ebx + 0x108]
push eax
call fcn.004e9750
add esp, 8
mov eax, dword [ebx + 0x390]
mov ecx, 0x400
mov edx, 0x1ff
mov ax, word [eax + 4]
sub ax, cx
cmp ax, dx
ja 0x40860e
push 0x162
push ebx
call fcn.004b6100
mov esi, eax
sub esi, dword [edi + 0x8c4]
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, esi
jge 0x408609
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop
mov dl, byte [eax]
cmp dl, 0xff
je 0x4085cc
cmp dl, 0x86
je 0x408609
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x4085c0
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
mov dl, byte [eax]
cmp dl, 0xff
je 0x4085ec
cmp dl, 0xa5
je 0x408609
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x4085e0
push 0
push 0
push 0
push 0
push 2
push 0x3d
push 0
push edi
call fcn.00477200
mov ecx, 0x400
mov eax, dword [ebx + 0x390]
mov ax, word [eax + 0x110]
sub ax, cx
mov ecx, 0x1ff
cmp ax, cx
ja 0x4086a9
push 0x162
push ebx
call fcn.004b6100
mov esi, eax
sub esi, dword [edi + 0x8c4]
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, esi
jge 0x4086a9
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x40866c
cmp dl, 0x86
je 0x4086a9
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x408660
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
mov dl, byte [eax]
cmp dl, 0xff
je 0x40868c
cmp dl, 0xa5
je 0x4086a9
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x408680
push 0
push 0
push 0
push 0
push 2
push 0x3d
push 0
push edi
call fcn.00477200
mov eax, dword [ebx + 0x624]
xor ecx, ecx
add eax, 4
mov dl, byte [eax]
cmp dl, 0xff
je 0x4086c0
cmp dl, 0xa6
je 0x4086fe
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x4086b4
mov eax, dword [ebx + 0x624]
xor ecx, ecx
add eax, 4
mov dl, byte [eax]
cmp dl, 0xff
je 0x4086e0
cmp dl, 0xa7
je 0x4086fe
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x4086d4
jmp 0x408784
mov ecx, dword [eax + 0x1c]
jmp 0x408360
mov ecx, dword [eax + 0x20]
jmp 0x408455
mov esi, dword [0xbdc15c]
push 0x237
push ebx
call fcn.004b6100
add esi, eax
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, esi
jge 0x408784
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
nop dword [eax]
mov dl, byte [eax]
cmp dl, 0xff
je 0x40873c
cmp dl, 0x86
je 0x408784
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x408730
mov eax, dword [edi + 0x624]
xor ecx, ecx
add eax, 4
mov dl, byte [eax]
cmp dl, 0xff
je 0x40875c
cmp dl, 0xa5
je 0x408784
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x408750
mov eax, dword [0xbdc160]
push eax
shr eax, 0x10
push eax
movzx eax, word [ebx]
push 1
push eax
push 0xa
push 0x89
push 0
push edi
call fcn.00477200
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
test eax, eax
je 0x4087c0
cmp dword [ebp + 0x20], 1
jg 0x4087c0
push esi
push eax
push edi
push ebx
call fcn.0040acb0
cmp byte [ebp + 0x14], 0
je 0x4087c0
test al, al
mov eax, dword [esp + 0x18]
movzx eax, word [eax + 8]
jne 0x4087b5
push 0
jmp 0x4087b7
push 1
push dword [edi]
push eax
push ebx
call fcn.00517480
cmp word [ebx + 0x78], 1
mov dword [esp + 0x24], 0
jne 0x408829
cmp word [edi + 0x78], 1
jne 0x408829
push esi
push edi
push ebx
call fcn.0040cac0
movss xmm0, dword [edi + 0xfc]
mov edx, eax
mov eax, esi
mov dword [esp + 0x24], edx
sub eax, edx
movd xmm1, eax
cvtdq2ps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x408801
xorps xmm0, xmm0
jmp 0x408805
subss xmm0, xmm1
movss dword [edi + 0xfc], xmm0
mov ecx, dword [edi + 0x154]
mov eax, ecx
sub eax, edx
cmp ecx, edx
mov ecx, 0
cmovl eax, ecx
mov dword [edi + 0x154], eax
jmp 0x408855
movss xmm0, dword [edi + 0xfc]
movd xmm1, esi
cvtdq2ps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x408849
mov dword [edi + 0xfc], 0
jmp 0x408855
subss xmm0, xmm1
movss dword [edi + 0xfc], xmm0
cmp word [edi + 0x78], 2
jne 0x4088ba
mov ax, word [ebx]
xor edx, edx
push 0
mov word [edi + 0x2b6], ax
mov ecx, edi
push 0x64
push dword [ebx]
call fcn.00523ad0
add esp, 0xc
cmp dword [edi + 0xe40], 0
je 0x4088ba
mov eax, 0x51eb851f
lea ecx, [edi + 0xe60]
imul esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebx]
mov dword [esp + 0x34], eax
xor eax, eax
cmp dword [ecx], edx
je 0x4088af
inc eax
add ecx, 8
cmp eax, 0x14
jl 0x4088a0
jmp 0x4088ba
mov ecx, dword [esp + 0x34]
add dword [edi + eax*8 + 0xe64], ecx
test esi, esi
jle 0x408b36
cmp word [ebx + 0x78], 1
jne 0x408b2f
cmp word [edi + 0x78], 1
jne 0x408b2f
mov eax, dword [ebx]
cmp eax, dword [edi]
je 0x408b2f
mov edx, dword [ebx + 0x3f4]
xor ecx, ecx
cmp word [esp + 0x1c], 4
mov al, 1
movzx eax, al
cmove eax, ecx
mov dword [esp + 0x18], eax
test edx, edx
js 0x40892c
cmp edx, 0x1194
jge 0x40892c
mov ecx, dword [edi + 0x3f4]
test ecx, ecx
js 0x40892c
cmp ecx, 0x1194
jge 0x40892c
cmp edx, dword [edi]
jne 0x40892c
xor edx, edx
movzx eax, al
cmp ecx, dword [ebx]
cmove eax, edx
mov byte [esp + 0x18], al
mov eax, dword [ebx + 0x290]
test eax, eax
je 0x408967
mov edx, dword [edi + 0x290]
test edx, edx
je 0x408967
mov ecx, dword [eax + 0x71c]
test ecx, ecx
jne 0x40894c
mov ecx, dword [eax]
push dword [edx]
push ecx
call fcn.0051bf90
mov ecx, dword [esp + 0x18]
xor edx, edx
cmp eax, 2
movzx ecx, cl
cmove ecx, edx
mov byte [esp + 0x18], cl
push edi
push ebx
call fcn.00485270
mov ecx, dword [esp + 0x30]
mov edx, edi
mov bl, al
call fcn.005253a0
mov ecx, dword [esp + 0x18]
xor edx, edx
test eax, eax
movzx ecx, cl
cmove edx, ecx
xor ecx, ecx
test bl, bl
movzx eax, dl
mov ebx, dword [esp + 0x30]
cmove ecx, eax
cmp dword [0x64b364], 3
mov dword [esp + 0x18], ecx
jne 0x4089f0
mov al, byte [ebx + 0x149]
mov byte [esp + 0x23], al
movzx eax, al
cmp dword [0x64b3a8], eax
jne 0x4089f0
push dword [ebx]
call fcn.00480090
test al, al
je 0x4089ec
movzx eax, byte [edi + 0x149]
cmp dword [0x64b3a8], eax
jne 0x4089e4
push dword [edi]
call fcn.00480090
test al, al
je 0x4089e4
xor al, al
mov dword [esp + 0x18], eax
mov dl, byte [esp + 0x23]
mov cl, dl
jmp 0x408a02
mov ecx, dword [esp + 0x18]
mov al, byte [ebx + 0x149]
mov dword [esp + 0x18], ecx
mov dl, al
mov byte [esp + 0x23], al
mov cl, al
cmp dword [0x64acec], 3
mov byte [esp + 0x13], cl
jne 0x408a55
movzx eax, cl
mov dl, cl
cmp dword [0x64ad2c], eax
jne 0x408a55
push dword [ebx]
mov byte [esp + 0x27], cl
call fcn.0047e4c0
test al, al
je 0x408a51
movzx eax, byte [edi + 0x149]
cmp dword [0x64ad2c], eax
jne 0x408a59
push dword [edi]
call fcn.0047e4c0
mov cl, byte [esp + 0x13]
test al, al
je 0x408a5d
xor dl, dl
mov dword [esp + 0x18], edx
jmp 0x408a61
mov dl, byte [esp + 0x23]
mov cl, dl
jmp 0x408a5d
mov cl, byte [esp + 0x13]
mov edx, dword [esp + 0x18]
cmp cl, 0x1e
jne 0x408a7c
cmp dword [0x5d8fb0], 7
jne 0x408a97
cmp byte [ebx + 0xdca], 0
je 0x408a97
xor dl, dl
jmp 0x408a97
cmp cl, 0x28
jne 0x408a8d
cmp byte [edi + 0x149], cl
jne 0x408a97
xor dl, dl
jmp 0x408a97
cmp cl, 0x12
jb 0x408ad8
cmp cl, 0x17
jbe 0x408aa0
mov dword [esp + 0x18], edx
cmp cl, 0x35
jne 0x408ab8
mov al, byte [edi + 0x149]
cmp al, 0x12
jb 0x408ab8
cmp al, 0x17
jbe 0x408ab2
cmp al, 0x35
jne 0x408ab8
xor dl, dl
mov dword [esp + 0x18], edx
cmp cl, 0x2d
jb 0x408ad8
cmp cl, 0x32
ja 0x408ad8
mov al, byte [edi + 0x149]
cmp al, 0x2d
jb 0x408ad8
mov ah, 0x32
cmp ah, al
sbb al, al
and al, dl
mov byte [esp + 0x18], al
movzx eax, cl
mov ecx, 0x9f436c
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00405650
mov eax, dword [esp + 0x40]
mov ecx, dword [0x9f436c]
cmp byte [eax + 0xd], 0
jne 0x408b0c
mov edx, dword [esp + 0x2c]
cmp edx, dword [eax + 0x10]
jge 0x408b0e
mov eax, ecx
cmp eax, ecx
je 0x408b1f
mov eax, dword [eax + 0x18]
cmp eax, 0xffffffff
je 0x408b1f
cmp eax, 2
je 0x408b2f
cmp byte [esp + 0x18], 0
je 0x408b2f
mov edx, dword [edi]
mov ecx, ebx
call fcn.00525060
push edi
push ebx
call fcn.00409fc0
mov byte [ebx + 0x204], 0
test esi, esi
jle 0x408e2a
push 0x48
push edi
call fcn.004774b0
mov dx, word [esp + 0x1c]
cmp dx, 4
je 0x408d85
cmp word [edi + 0x78], 1
jne 0x408d85
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, dword [edi + 0x97c]
jge 0x408b7f
push esi
jmp 0x408ba4
mov ecx, dword [edi + 0x7d0]
add ecx, dword [edi + 0x94c]
test ecx, ecx
jle 0x408bb7
imul ecx, esi
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push 0xa
push dword [ebx]
mov edx, 0xa
mov ecx, edi
call fcn.00523ad0
add esp, 0xc
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, dword [edi + 0x980]
jge 0x408c60
movd xmm0, dword [edi + 0x14c]
mov ecx, dword [edi + 0x154]
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x38], 0xff2614c1
addss xmm0, dword [edi + 0x100]
cvttss2si edx, xmm0
movss dword [edi + 0xfc], xmm0
cmp edx, 0xfde8
jle 0x408c11
mov byte [esp + 0x3c], 0xfd
mov eax, 0xfde8
jmp 0x408c1e
movzx eax, dx
shr eax, 8
mov byte [esp + 0x3c], al
movzx eax, dx
mov byte [esp + 0x3d], al
mov byte [esp + 0x3e], 0
cmp ecx, 0xfde8
jle 0x408c38
mov byte [esp + 0x3f], 0xfd
mov al, 0xe8
jmp 0x408c44
movzx eax, cx
shr eax, 8
mov byte [esp + 0x3f], al
mov al, cl
mov dword [esp + 0x44], edx
lea edx, [esp + 0x38]
mov dword [esp + 0x48], ecx
mov ecx, dword [edi]
push 0x14
mov byte [esp + 0x44], al
call fcn.00526480
add esp, 4
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, dword [edi + 0x988]
jge 0x408cfe
cvttss2si edx, dword [edi + 0xfc]
mov ecx, dword [edi + 0x15c]
add ecx, dword [edi + 0x158]
mov dword [edi + 0x154], ecx
mov dword [esp + 0x38], 0xff2614c1
cmp edx, 0xfde8
jle 0x408caf
mov byte [esp + 0x3c], 0xfd
mov eax, 0xfde8
jmp 0x408cbc
movzx eax, dx
shr eax, 8
mov byte [esp + 0x3c], al
movzx eax, dx
mov byte [esp + 0x3d], al
mov byte [esp + 0x3e], 0
cmp ecx, 0xfde8
jle 0x408cd6
mov byte [esp + 0x3f], 0xfd
mov al, 0xe8
jmp 0x408ce2
movzx eax, cx
shr eax, 8
mov byte [esp + 0x3f], al
mov al, cl
mov dword [esp + 0x44], edx
lea edx, [esp + 0x38]
mov dword [esp + 0x48], ecx
mov ecx, dword [edi]
push 0x14
mov byte [esp + 0x44], al
call fcn.00526480
add esp, 4
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, dword [edi + 0x984]
jge 0x408d43
movd xmm0, dword [edi + 0x150]
push dword [edi + 0x128]
mov ecx, dword [edi]
cvtdq2ps xmm0, xmm0
addss xmm0, dword [edi + 0x10c]
cvttss2si eax, xmm0
movss dword [edi + 0x108], xmm0
push eax
call fcn.004e9750
add esp, 8
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, dword [edi + 0x98c]
jge 0x408d7e
mov eax, dword [edi + 0x12c]
add eax, dword [edi + 0x130]
mov ecx, dword [edi]
push eax
mov dword [edi + 0x128], eax
cvttss2si eax, dword [edi + 0x108]
push eax
call fcn.004e9750
add esp, 8
xor ecx, ecx
jmp 0x408e07
xor ecx, ecx
cmp dx, 4
jne 0x408e07
cmp word [edi + 0x78], 1
jne 0x408e07
mov eax, dword [edi + 0x390]
movzx eax, word [eax + 0x864]
mov edx, eax
test ax, ax
js 0x408de2
mov eax, 0x2000
cmp dx, ax
jge 0x408de2
mov eax, 0x1a02
cmp dx, ax
je 0x408e07
mov eax, 0x1a03
cmp dx, ax
je 0x408e07
mov eax, 0x1a04
cmp dx, ax
je 0x408e07
mov eax, 0x1a25
cmp dx, ax
je 0x408e07
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
movzx eax, word [edi + 0xcc]
xor ecx, ecx
cmp edx, dword [eax*4 + 0xbdb580]
mov eax, 1
cmovl ecx, eax
mov edx, dword [esp + 0x24]
sub esi, edx
movzx eax, word [esp + 0x1c]
push edx
push dword [esp + 0x2c]
push eax
push ecx
push 0
push esi
push edi
push ebx
mov ecx, 0x6509a4
call fcn.004dd760
jmp 0x408e42
movzx eax, word [esp + 0x1c]
mov edx, dword [edi]
mov ecx, dword [ebx]
push 0
push eax
push 0
push 0
call fcn.004e94a0
add esp, 0x10
cmp word [ebx + 0x78], 1
jne 0x407353
xorps xmm0, xmm0
comiss xmm0, dword [ebx + 0xfc]
jb 0x407353
cmp dword [ebx + 0x5dc], 0
jg 0x407353
mov dword [ebx + 0x250], edi
cmp word [edi + 0x78], 1
mov dword [ebx + 0x5dc], 3
sete al
mov byte [ebx + 0x254], al
jmp 0x407353
mov ecx, dword [esp + 0x4c]
xor al, al
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00529f01
mov esp, ebp
pop ebp
ret 0x20