Function at 0x452a70
Capabilities:
Parse credit card information
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4984b8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xfac
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx]
mov eax, dword [ebp + 8]
xor ecx, ecx
push ebx
xor ebx, ebx
cmp byte [eax], 2
mov eax, dword [eax + 8]
setne cl
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0xc]
push esi
push edi
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x34], 0x4a596c
dec ecx
and ecx, dword [0x4c0e18]
add edx, edx
mov edi, dword [eax + edx*8 + 0xc]
lea eax, [eax + edx*8 + 0xc]
mov dword [ebp - 0x64], ecx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x30], ebx
cmp dword [edi + 8], 0x40
mov dword [ebp - 0x20], edi
je 0x454522
mov eax, 0x10
call fcn.00493680
mov ecx, dword [edi]
mov esi, esp
mov dword [esi], ecx
mov edx, dword [edi + 4]
mov dword [esi + 4], edx
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [esi + 0xc], ecx
mov eax, dword [esi + 8]
cmp eax, 7
jge 0x452f4e
cmp eax, 6
jne 0x454334
mov eax, dword [esi + 4]
xor edi, edi
cmp eax, edi
je 0x452d6f
mov ecx, dword [esi]
mov dword [esi], 0x4a596c
mov dword [esi + 8], edi
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
cmp dword [ecx], edi
je 0x452c4b
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
cmp eax, dword [ecx]
jae 0x452b65
cmp edi, 0xfd
jae 0x452b6f
mov dx, word [eax]
mov word [ebp + edi*2 - 0x294], dx
add eax, 2
inc edi
cmp eax, dword [ecx]
jb 0x452b47
mov dword [ebp - 0x14], eax
cmp edi, 0xfd
jb 0x452b7d
jmp 0x452b72
mov dword [ebp - 0x14], eax
cmp eax, dword [ecx]
jb 0x452c84
mov ecx, dword [ebp - 0x1c]
mov ebx, dword [ecx + 4]
movzx eax, byte [ebx + 0x17]
cmp eax, 3
ja case.default.0x452b89
jmp dword [eax*4 + 0x454898]
mov eax, ebx
call fcn.00401160
cmp dword [0x4c0fd8], 0
jne 0x452bd4
cmp dword [ebx + 0xc], 0
jne 0x452bd4
mov ecx, dword [ebx + 0x18]
push 0
lea eax, [ebp - 0x88]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x452bca
mov dword [0x4c481c], 0
dec eax
jmp 0x452c0f
mov dword [0x4c481c], ebx
xor eax, eax
jmp 0x452c0f
mov eax, dword [ebx + 0xc]
shr eax, 1
jmp 0x452c0f
mov ecx, dword [ebx + 0xc]
push 0
call fcn.0046e0a0
jmp 0x452c0f
push 0
mov ecx, 0x4c314c
call fcn.00403a90
cmp eax, 0xffffffff
jne 0x452c0f
xor eax, eax
jmp 0x452c0f
mov edx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x10]
push edx
push 0
call eax
add esp, 8
mov ecx, 0xfd
sub ecx, edi
cmp eax, ecx
ja 0x452c84
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebx + 4]
lea edx, [ebp + edi*2 - 0x294]
push edx
call fcn.0046e0a0
mov ecx, dword [ebp - 0x14]
add edi, eax
movzx eax, word [ebx + 0xa]
add ebx, 0xc
cmp dword [ebx], 0
lea edx, [ecx + eax*2]
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x1c], ebx
jne 0x452b3d
mov ecx, dword [ebp - 0x14]
movzx eax, word [ecx]
test ax, ax
je 0x452c72
cmp edi, 0xfd
jae 0x452c7a
add ecx, 2
mov word [ebp + edi*2 - 0x294], ax
movzx eax, word [ecx]
inc edi
test ax, ax
jne 0x452c56
cmp edi, 0xfd
jb 0x452c80
cmp word [ecx], 0
jne 0x452c84
test edi, edi
jne 0x452cc6
mov eax, dword [ebp - 0x1c]
cmp dword [eax], 0
je 0x452c98
lea esp, [esp]
add eax, 0xc
cmp dword [eax], 0
jne 0x452c90
cmp byte [eax + 8], 0
je 0x454334
mov eax, dword [ebp - 0x64]
test eax, eax
je case.default.0x4545e6
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je case.default.0x4545e6
push eax
or eax, 0xffffffff
call fcn.00401200
jmp case.default.0x4545e6
mov ebx, dword [ebp - 0x1c]
xor eax, eax
mov word [ebp + edi*2 - 0x294], ax
cmp byte [ebx + 8], al
je 0x452d13
push eax
push edi
lea ecx, [ebp - 0x294]
push ecx
mov ecx, 0x4c3168
call fcn.0041e430
mov dword [ebx + 4], eax
test eax, eax
je 0x452ca2
movzx edx, byte [ebx + 9]
cmp edx, dword [eax + 0x14]
jge 0x45445f
cmp byte [ebx + 8], 2
jne 0x452ca2
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x18]
add edi, 0x10
jmp 0x452ad3
cmp word [ebp - 0x294], ax
je 0x4546e2
lea eax, [ebp - 0x4d]
push eax
push 0
push 3
lea ecx, [ebp - 0x8c]
push ecx
push edi
lea edx, [ebp - 0x294]
push edx
mov ecx, 0x4c3168
call fcn.0041fbb0
test eax, eax
jne 0x452d6d
cmp byte [ebp - 0x4d], al
mov ecx, dword [ebp - 0x8c]
setne al
lea edx, [ebp - 0x294]
push eax
push ecx
push edi
push edx
mov ecx, 0x4c3168
call fcn.0041ff20
test eax, eax
je 0x4546e2
mov dword [esi], eax
mov edi, dword [esi]
mov al, byte [edi + 0x17]
test al, al
jne 0x452d7e
mov eax, dword [edi + 0xc]
mov al, byte [eax + 0x17]
movzx eax, al
mov ebx, 1
sub eax, ebx
je 0x452dd1
sub eax, 3
jne 0x452e07
mov eax, dword [edi + 0x10]
cmp eax, 0x442730
jne 0x452db1
mov eax, dword [0x4bd41c]
mov ecx, dword [eax + 8]
mov dword [esi], ecx
mov edx, dword [eax + 0xc]
mov dword [esi + 4], edx
mov dword [esi + 8], ebx
jmp 0x454334
cmp eax, 0x442de0
jne 0x452e07
mov eax, dword [0x4bd41c]
mov ecx, dword [eax + 0x38]
mov dword [esi], ecx
mov dword [esi + 4], 0
mov dword [esi + 8], ebx
jmp 0x454334
cmp dword [0x4c0fd8], 0
jne 0x45432d
cmp byte [edi + 0x17], 0
jne 0x452de9
mov eax, dword [edi + 0xc]
jmp 0x452deb
mov eax, edi
test byte [eax + 0x15], 0xa
jne 0x45432d
xor edx, edx
cmp dword [eax + 0xc], edx
setne dl
mov eax, edx
test eax, eax
jne 0x45432d
movzx eax, byte [edi + 0x17]
cmp eax, 3
ja case.default.0x452e10
jmp dword [eax*4 + 0x4548a8]
mov eax, edi
call fcn.00401160
cmp dword [0x4c0fd8], 0
jne 0x452e5b
cmp dword [edi + 0xc], 0
jne 0x452e5b
mov ecx, dword [edi + 0x18]
push 0
lea eax, [ebp - 0x90]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x452e51
mov dword [0x4c481c], 0
dec eax
jmp 0x452e91
mov dword [0x4c481c], edi
xor eax, eax
jmp 0x452e91
mov eax, dword [edi + 0xc]
shr eax, 1
jmp 0x452e91
mov ecx, dword [edi + 0xc]
push 0
call fcn.0046e0a0
jmp 0x452e91
push 0
mov ecx, 0x4c314c
call fcn.00403a90
cmp eax, 0xffffffff
jne 0x452e91
xor eax, eax
jmp 0x452e91
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x10]
push edx
push 0
call eax
add esp, 8
lea edi, [eax + 1]
cmp edi, ebx
jne 0x452ec2
mov eax, dword [esi]
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x452ea7
mov ecx, dword [eax + 0xc]
mov cl, byte [ecx + 0x17]
cmp cl, 1
je 0x45432d
mov dword [esi], 0x4a596c
mov dword [esi + 8], 0
jmp 0x454334
mov eax, dword [ebp + 0x1c]
mov edx, dword [ebp - 0x54]
sub edx, dword [eax]
mov ecx, dword [ebp + 0x20]
mov eax, dword [ecx]
sar edx, 1
sub eax, edx
cmp edi, eax
ja 0x452ee2
mov ebx, dword [ebp - 0x54]
lea ecx, [ebx + edi*2]
mov dword [ebp - 0x54], ecx
jmp 0x452f31
cmp edi, 0x1001
jae 0x452f02
cmp dword [ebp - 0x30], 0x9c40
jae 0x452f02
lea eax, [edi + edi]
call fcn.00491130
add dword [ebp - 0x30], edi
mov ebx, esp
jmp 0x452f31
mov ebx, dword [ebp - 0x24]
cmp ebx, 0xc8
je 0x45446d
lea edx, [edi + edi]
push edx
call fcn.004863c4
add esp, 4
mov dword [ebp + ebx*4 - 0x5b4], eax
test eax, eax
je 0x45446d
inc dword [ebp - 0x24]
mov ebx, eax
mov ecx, dword [esi]
push ebx
call fcn.0046e0a0
mov dword [esi], ebx
mov dword [esi + 4], 0
mov dword [esi + 8], 4
jmp 0x454334
cmp eax, 0x3d
jne 0x4532a7
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
mov dword [ebp - 0x28], eax
movzx eax, byte [ecx + 9]
cmp eax, ebx
jg 0x452ca2
mov edx, dword [ebp - 0x18]
lea edi, [ebp - 0x294]
mov dword [esi + 4], edi
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x48], edi
xor edi, edi
sub edx, eax
mov dword [ebp - 0x18], edx
mov dword [esi + 0xc], edi
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x58], edi
mov dword [ebp - 4], edi
cmp byte [ecx + 8], 2
lea ebx, [ebp + edx*4 - 0xdb4]
sete cl
movzx edx, cl
push edx
mov edx, dword [ebp - 0x28]
push eax
mov eax, dword [ebp + 0x10]
push ebx
push esi
push eax
lea ecx, [ebp - 0x60]
push ecx
push edx
call fcn.00454a50
test al, al
je 0x454478
mov ecx, dword [ebp + 8]
mov dword [0x4c3794], ecx
mov eax, dword [esi + 8]
cmp eax, 1
je 0x453279
cmp eax, 2
je 0x453279
cmp eax, 5
je 0x453279
mov eax, dword [ebp - 0x18]
cmp eax, edi
jne 0x45300d
mov edx, dword [ebp - 0x20]
cmp dword [edx + 0x18], 0x40
jne 0x45300d
cmp byte [ecx], 3
mov dword [ebp - 0x2c], 1
je 0x4544ab
mov ebx, dword [ebp - 0x64]
jmp 0x45303b
mov ecx, dword [ebp - 0x20]
cmp dword [ecx + 0x18], 0x12
mov dword [ebp - 0x2c], edi
jne 0x453039
cmp eax, edi
je 0x453039
mov ebx, dword [ebx - 4]
cmp dword [ebx + 8], 3
jne 0x453039
mov ebx, dword [ebx]
mov al, byte [ebx + 0x17]
test al, al
jne 0x453035
mov edx, dword [ebx + 0xc]
mov al, byte [edx + 0x17]
cmp al, 1
je 0x45303b
xor ebx, ebx
mov eax, dword [esi]
xor edx, edx
cmp ebx, edx
je 0x4530f8
mov ecx, dword [0x4bd41c]
mov edi, dword [ebp - 0x28]
cmp dword [ecx + 0xb4], edi
jne 0x453068
mov cl, byte [ebx + 0x16]
test cl, cl
je 0x453068
test cl, 4
je 0x4530f8
mov edi, dword [esi + 0xc]
cmp edi, eax
jne 0x45307c
mov edx, dword [esi + 4]
push edx
mov eax, ebx
call fcn.0046e3d0
jmp 0x4530bf
lea edi, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, dx
jne 0x453080
mov ecx, dword [esi]
sub eax, edi
sar eax, 1
cmp ecx, dword [0x4c30a0]
jne 0x4530b6
cmp eax, 0x40
jb 0x4530b6
push eax
mov edi, ecx
mov eax, ebx
call fcn.0046e3d0
xor eax, eax
mov dword [0x4c30a0], eax
mov dword [0x4c30a4], eax
jmp 0x4530bf
push ebx
or eax, 0xffffffff
call fcn.00401200
cmp dword [ebp - 0x2c], 0
jne 0x4544bb
mov eax, dword [ebp - 0x20]
dec dword [ebp - 0x18]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
lea eax, [ebp - 0x60]
mov dword [esi], ebx
mov dword [esi + 8], 3
mov dword [ebp - 4], 0xffffffff
call fcn.00454fe0
jmp 0x454334
mov ecx, dword [esi + 0xc]
mov edi, 1
cmp ecx, edx
je 0x453124
mov ebx, dword [ebp - 0x24]
cmp ebx, 0xc8
je 0x4544cf
cmp ecx, eax
jne 0x453119
xor edi, edi
mov dword [ebp + ebx*4 - 0x5b4], ecx
inc ebx
mov dword [ebp - 0x24], ebx
mov ecx, dword [ebp - 0x48]
mov dword [esi + 0xc], ecx
cmp word [eax], dx
jne 0x453153
lea eax, [ebp - 0x60]
mov dword [esi], 0x4a596c
mov dword [esi + 8], 4
mov dword [esi + 4], edx
mov dword [ebp - 4], 0xffffffff
call fcn.00454fe0
jmp 0x454334
mov ecx, dword [ebp - 0x28]
cmp byte [ecx + 0x31], dl
je 0x45316b
cmp edi, edx
je 0x45319f
xor eax, eax
cmp dword [ebp - 0x2c], edx
sete al
mov edi, eax
jmp 0x45319f
cmp eax, dword [0x4c30a0]
jne 0x45319a
xor edi, edi
cmp dword [ebp - 0x2c], edx
jne 0x45319f
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0x18]
add ecx, 0x18
cmp eax, 0x40
je 0x45319f
cmp eax, 0x3d
je 0x45319a
mov eax, dword [ecx + 0x10]
add ecx, 0x10
cmp eax, 0x40
jne 0x453188
jmp 0x45319f
mov edi, 1
mov dword [esi + 4], edx
mov dword [esi + 8], 4
cmp edi, edx
je 0x453265
mov eax, dword [esi]
lea edi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, dx
jne 0x4531b6
mov edx, dword [ebp + 0x1c]
sub eax, edi
mov edi, dword [ebp - 0x54]
sar eax, 1
mov ecx, edi
sub ecx, dword [edx]
lea ebx, [eax + 1]
mov eax, dword [ebp + 0x20]
mov edx, dword [eax]
sar ecx, 1
sub edx, ecx
cmp ebx, edx
ja 0x4531f5
mov eax, dword [esi]
add ebx, ebx
push ebx
push eax
push edi
call fcn.00489760
add esp, 0xc
add edi, ebx
mov dword [ebp - 0x54], edi
jmp 0x453263
cmp ebx, 0x1001
jae 0x453225
cmp dword [ebp - 0x30], 0x9c40
jae 0x453225
lea eax, [ebx + ebx]
call fcn.00491130
mov ecx, esp
lea eax, [ebx + ebx]
push eax
mov eax, dword [esi]
push eax
push ecx
call fcn.00489760
add esp, 0xc
add dword [ebp - 0x30], ebx
jmp 0x453263
mov edi, dword [ebp - 0x24]
cmp edi, 0xc8
je 0x4544f8
lea ecx, [ebx + ebx]
push ecx
call fcn.004863c4
add esp, 4
mov dword [ebp + edi*4 - 0x5b4], eax
test eax, eax
je 0x4544f8
mov ecx, dword [esi]
lea edx, [ebx + ebx]
push edx
push ecx
push eax
call fcn.00489760
add esp, 0xc
inc edi
mov dword [ebp - 0x24], edi
mov dword [esi], eax
lea eax, [ebp - 0x60]
mov dword [ebp - 4], 0xffffffff
call fcn.00454fe0
jmp 0x454334
mov eax, dword [ebp - 0x48]
mov dword [esi + 0xc], eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x60]
cmp eax, edi
je 0x454334
lea ecx, [ebp - 0x58]
push ecx
lea edx, [ebp - 0x5c]
push edx
push eax
call fcn.0046e5f0
add esp, 0xc
jmp 0x454334
cmp eax, 0x1e
jne 0x4532ea
cmp dword [esi + 0xc], 0
je 0x45445f
test ebx, ebx
je 0x45445f
mov eax, dword [ebp + ebx*4 - 0xdb8]
mov ecx, dword [eax]
dec ebx
mov dword [esi], ecx
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov ecx, dword [eax + 8]
mov dword [esi + 8], ecx
mov edx, dword [eax + 0xc]
mov dword [esi + 0xc], edx
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x18], ebx
mov dword [esi + 0xc], eax
jmp 0x45433e
test ebx, ebx
je 0x452ca2
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp + ecx*4 - 0xdb8]
dec ecx
cmp dword [ebx + 8], 7
mov dword [ebp - 0x18], ecx
jge 0x452ca2
cmp eax, 0x1f
jne 0x453345
mov eax, dword [esi + 0xc]
test eax, eax
je 0x452ca2
mov ecx, dword [eax + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [ebx]
mov dword [esi], edx
mov dword [ebp - 0x20], eax
mov eax, dword [ebx + 4]
mov dword [esi + 4], eax
mov ecx, dword [ebx + 8]
mov dword [esi + 8], ecx
mov edx, dword [ebx + 0xc]
mov dword [esi + 0xc], edx
mov dword [ebx + 8], 1
jmp 0x454334
cmp eax, 0x11
je 0x45445f
cmp eax, 0x12
je 0x45336b
cmp eax, 0x1d
je 0x45336b
cmp eax, 0x2a
je 0x45336b
mov eax, ebx
call fcn.0044aea0
mov edi, eax
mov dword [ebp - 0x70], edi
jmp 0x45336e
mov edi, dword [ebp - 0x70]
mov ecx, dword [esi + 8]
xor eax, eax
lea edx, [ecx - 8]
mov dword [ebp - 0x68], eax
cmp edx, 0x34
ja case.0x453389.10
movzx edx, byte [edx + 0x4548d4]
jmp dword [edx*4 + 0x4548b8]
mov ecx, edi
mov eax, ebx
call fcn.0044ad80
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esi + 8], 1
jmp 0x454334
mov ecx, edi
mov eax, ebx
call fcn.0044ad80
test eax, eax
jne 0x453d01
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], eax
jmp 0x454334
cmp edi, 1
jne 0x4533f4
push edi
mov ecx, ebx
call fcn.0044b000
add esp, 4
neg eax
adc edx, 0
neg edx
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esi + 8], edi
jmp 0x454334
cmp edi, 2
jne 0x453596
push 1
push 0
mov eax, ebx
call fcn.0044b080
fchs
fstp qword [esi]
add esp, 8
mov dword [esi + 8], edi
jmp 0x454334
xor edx, edx
cmp ecx, 0x3b
setge dl
mov dword [ebp - 0x48], edx
mov edx, dword [ebx + 8]
cmp edx, 3
jne 0x452eb0
cmp edi, eax
je 0x4534db
cmp ecx, 8
je 0x453447
mov dword [ebp - 0x14], 0xffffffff
cmp ecx, 0x3b
jne 0x45344e
mov dword [ebp - 0x14], 1
push 1
cmp edi, 1
jne 0x453479
mov ecx, ebx
call fcn.0044b000
mov dword [esi], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 4], edx
cdq
add esp, 4
add eax, dword [esi]
adc edx, dword [esi + 4]
push edx
push eax
mov eax, dword [ebx]
push eax
call fcn.00412620
jmp 0x453492
push 0
mov eax, ebx
call fcn.0044b080
fst qword [esi]
fiadd dword [ebp - 0x14]
mov ecx, dword [ebx]
fstp qword [esp]
push ecx
call fcn.00412650
cmp dword [ebp - 0x48], 0
je 0x45340f
mov ebx, dword [ebx]
mov al, byte [ebx + 0x17]
test al, al
jne 0x4534ab
mov edx, dword [ebx + 0xc]
mov al, byte [edx + 0x17]
cmp al, 1
jne 0x4534b6
mov dword [esi], ebx
jmp 0x45432d
cmp edi, 1
jne 0x4534cc
mov eax, dword [ebp - 0x14]
cdq
add dword [esi], eax
mov dword [esi + 8], edi
adc dword [esi + 4], edx
jmp 0x454334
fild dword [ebp - 0x14]
mov dword [esi + 8], edi
fadd qword [esi]
fstp qword [esi]
jmp 0x454334
cmp edx, 3
jne 0x452eb0
mov ecx, dword [ebx]
push 1
push 0
push 0xffffffffffffffff
push 0
call fcn.0046dd60
cmp dword [ebp - 0x48], 0
je 0x452eb0
mov ebx, dword [ebx]
mov al, byte [ebx + 0x17]
test al, al
jne 0x45350c
mov eax, dword [ebx + 0xc]
mov al, byte [eax + 0x17]
cmp al, 1
jne 0x452eb0
mov dword [esi], ebx
jmp 0x45432d
mov ecx, dword [ebx + 8]
cmp ecx, 3
jne 0x453579
mov eax, dword [ebx]
cmp byte [eax + 0x17], 0
jne 0x453530
mov ecx, dword [eax + 0xc]
jmp 0x453532
mov ecx, eax
test byte [ecx + 0x15], 2
je 0x453557
mov dword [esi + 8], 1
mov ebx, dword [ebx]
cmp byte [ebx + 0x17], 0
jne 0x45354a
mov ebx, dword [ebx + 0xc]
mov eax, dword [ebx]
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x454334
call fcn.004034a0
push 0
mov dword [esi + 8], 1
mov ecx, dword [ebx]
push 1
call fcn.00401240
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x454334
cmp ecx, 5
jne 0x453596
mov dword [esi + 8], 1
mov eax, dword [ebx]
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x454334
cmp edi, eax
jne 0x4535a4
mov dword [esi], 0x4a596c
mov dword [esi + 8], eax
jmp 0x454334
xor ecx, ecx
cmp edi, 1
sete cl
push ecx
mov ecx, ebx
call fcn.0044b000
add esp, 4
cmp dword [esi + 8], 0x37
jne 0x4535f4
test edx, edx
ja 0x4535df
jb 0x4535c8
cmp eax, 0xffffffff
ja 0x4535df
not eax
mov dword [esi + 4], 0
mov dword [esi], eax
mov dword [esi + 8], 1
jmp 0x454334
not eax
not edx
mov dword [esi + 4], edx
mov dword [esi], eax
mov dword [esi + 8], 1
jmp 0x454334
cmp eax, 0x1000
jae 0x45360f
xor eax, eax
cdq
mov dword [esi + 4], edx
mov dword [esi], eax
mov dword [esi + 8], 1
jmp 0x454334
movzx eax, byte [eax]
cdq
mov dword [esi + 4], edx
mov dword [esi], eax
mov dword [esi + 8], 1
jmp 0x454334
cmp dword [ebp - 0x18], eax
je 0x452ca2
mov eax, dword [ebp - 0x18]
dec eax
mov dword [ebp - 0x18], eax
lea eax, [ebp + eax*4 - 0xdb4]
mov dword [ebp - 0x48], eax
mov eax, dword [eax]
mov dword [ebp - 0x1c], eax
mov eax, dword [eax + 8]
cmp eax, 7
jge 0x452ca2
cmp ecx, 0x1d
jg 0x453742
cmp ecx, 0x12
jl 0x453742
cmp eax, 3
je 0x453678
mov dword [esi], 0x4a596c
mov dword [esi + 8], 0
jmp 0x454334
lea eax, [ecx - 0x12]
cmp eax, 0xb
ja case.default.0x453684
jmp dword [eax*4 + 0x45490c]
mov edx, dword [ebp - 0x1c]
mov edi, dword [edx]
mov eax, ebx
call fcn.0046d770
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x4536a9
mov ecx, dword [eax + 0xc]
mov cl, byte [ecx + 0x17]
cmp cl, 2
jne 0x4536d2
mov edx, dword [ebx]
mov dword [esi], edx
mov eax, dword [ebx + 4]
mov dword [esi + 4], eax
mov ecx, dword [ebx + 8]
mov eax, dword [ebp - 0x20]
mov dword [esi + 8], ecx
mov edx, dword [ebx + 0xc]
mov dword [esi + 0xc], edx
mov ecx, dword [eax + 0xc]
mov dword [esi + 0xc], ecx
jmp 0x454334
mov dword [esi], eax
jmp 0x45432d
mov dword [esi + 8], 0x30
jmp case.default.0x453684
mov dword [esi + 8], 0x31
jmp case.default.0x453684
mov dword [esi + 8], 0x32
jmp case.default.0x453684
mov dword [esi + 8], 0x33
jmp case.default.0x453684
mov dword [esi + 8], 0x34
jmp case.default.0x453684
mov dword [esi + 8], 0x2b
jmp case.default.0x453684
mov dword [esi + 8], 0x2c
jmp case.default.0x453684
mov dword [esi + 8], 0x2d
jmp case.default.0x453684
mov dword [esi + 8], 0x2e
jmp case.default.0x453684
mov dword [esi + 8], 0x2f
jmp case.default.0x453684
mov dword [esi + 8], 0x2a
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx]
mov dword [ebp - 0x68], eax
cmp dword [esi + 8], 0x2a
je 0x453cb5
mov edi, dword [ebp - 0x70]
test edi, edi
je 0x453cb5
mov eax, dword [ebp - 0x1c]
call fcn.0044aea0
mov dword [ebp - 0x38], eax
test eax, eax
je 0x453cb5
cmp edi, 1
jne 0x453779
cmp eax, edi
jne 0x453779
cmp dword [esi + 8], 0x33
jne 0x45378e
mov eax, dword [esi + 8]
cmp eax, 0x2f
jg 0x453a5e
cmp eax, 0x2b
jl 0x453a5e
xor ecx, ecx
cmp edi, 1
sete cl
push ecx
mov ecx, ebx
call fcn.0044b000
mov ecx, dword [ebp - 0x1c]
mov edi, edx
xor edx, edx
add esp, 4
cmp dword [ebp - 0x38], 1
mov ebx, eax
sete dl
mov dword [ebp - 0x84], ebx
mov dword [ebp - 0x80], edi
push edx
call fcn.0044b000
mov ecx, dword [esi + 8]
add ecx, 0xffffffdd
add esp, 4
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], edx
mov dword [ebp - 0x14], 1
cmp ecx, 0x17
ja case.0x4537df.42
jmp dword [ecx*4 + 0x45493c]
add eax, ebx
adc edx, edi
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
sub eax, ebx
sbb edx, edi
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
push edi
push ebx
push edx
push eax
call fcn.0048d210
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
cmp eax, ebx
jne 0x453846
cmp edx, edi
jne 0x453846
mov edx, dword [ebp - 0x14]
mov eax, 1
xor ecx, ecx
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
mov edx, dword [ebp - 0x14]
xor eax, eax
xor ecx, ecx
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
cmp eax, ebx
jne 0x453862
cmp edx, edi
je 0x453846
mov edx, dword [ebp - 0x14]
mov eax, 1
xor ecx, ecx
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
cmp edx, edi
jl 0x453846
jg 0x453883
cmp eax, ebx
jbe 0x453846
mov edx, dword [ebp - 0x14]
mov eax, 1
xor ecx, ecx
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
cmp edx, edi
jg 0x453846
jl 0x4538a4
cmp eax, ebx
jae 0x453846
mov edx, dword [ebp - 0x14]
mov eax, 1
xor ecx, ecx
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
cmp edx, edi
jl 0x453846
jg 0x4538c5
cmp eax, ebx
jb 0x453846
mov edx, dword [ebp - 0x14]
mov eax, 1
xor ecx, ecx
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
cmp edx, edi
jg 0x453846
jl 0x4538ee
cmp eax, ebx
ja 0x453846
mov edx, dword [ebp - 0x14]
mov eax, 1
xor ecx, ecx
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
and eax, ebx
and edx, edi
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
or eax, ebx
or edx, edi
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
xor eax, ebx
xor edx, edi
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
mov ecx, ebx
call fcn.00497070
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
mov ecx, ebx
call fcn.00497040
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
mov ecx, ebx
or ecx, dword [ebp - 0x80]
jne 0x453989
mov edx, ecx
mov dword [esi], 0x4a596c
mov dword [ebp - 0x14], ecx
mov dword [esi + 8], edx
jmp 0x45430a
mov ecx, dword [ebp - 0x80]
push ecx
push ebx
push edx
push eax
call fcn.00496570
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x14]
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x45430a
mov ecx, eax
or ecx, edx
jne 0x4539cd
test edi, edi
jg 0x453a20
jl 0x4539b5
test ebx, ebx
jae 0x453a20
mov dword [ebp - 0x14], 0
mov edx, dword [ebp - 0x14]
mov dword [esi], 0x4a596c
mov dword [esi + 8], edx
jmp 0x45430a
test edx, edx
jg 0x453a20
jl 0x4539d7
test eax, eax
jae 0x453a20
neg eax
adc edx, 0
neg edx
mov dword [ebp - 0x48], 1
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], edx
fild qword [ebp - 0x84]
sub esp, 0x10
fstp qword [esp + 8]
fild qword [ebp - 0x7c]
fstp qword [esp]
call fcn.0042e840
cmp dword [ebp - 0x48], 0
fst qword [esi]
je 0x453a29
push 0
push 2
push edi
push ebx
call fcn.00496e50
or eax, edx
je 0x453a29
fchs
fstp qword [esi]
jmp 0x453a2b
mov dword [ebp - 0x48], 0
jmp 0x4539eb
fstp st(0)
test edi, edi
jg 0x453a47
jl 0x453a35
test ebx, ebx
jae 0x453a47
mov dword [ebp - 0x14], 2
mov edx, dword [ebp - 0x14]
mov dword [esi + 8], edx
jmp 0x45430a
fld qword [esi]
call fcn.004964f6
mov dword [esi + 4], edx
mov dword [esi], eax
mov edx, dword [ebp - 0x14]
mov dword [esi + 8], edx
jmp 0x45430a
xor eax, eax
cmp edi, 2
sete al
push eax
push 1
mov eax, ebx
call fcn.0044b080
fstp qword [ebp - 0x44]
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
cmp dword [ebp - 0x38], 2
sete cl
push ecx
push 1
call fcn.0044b080
fst qword [ebp - 0x4c]
mov ecx, dword [esi + 8]
add esp, 0x10
cmp ecx, 0x23
jl 0x453a9f
mov ebx, 1
cmp ecx, 0x29
jle 0x453aa4
mov ebx, 2
lea eax, [ecx - 0x23]
cmp eax, 0x17
ja case.0x453ab3.42
movzx edx, byte [eax + 0x4549cc]
jmp dword [edx*4 + 0x45499c]
fadd qword [ebp - 0x44]
mov dword [esi + 8], ebx
fstp qword [esi]
jmp 0x45430a
fsub qword [ebp - 0x44]
mov dword [esi + 8], ebx
fstp qword [esi]
jmp 0x45430a
fmul qword [ebp - 0x44]
mov dword [esi + 8], ebx
fstp qword [esi]
jmp 0x45430a
fld qword [ebp - 0x44]
fld st(0)
fldz
fucompp
fnstsw ax
test ah, 0x44
jp 0x453b05
fstp st(1)
mov dword [esi], 0x4a596c
xor ebx, ebx
fstp st(0)
mov dword [esi + 8], ebx
jmp 0x45430a
fdivp st(1)
fst qword [esi]
cmp ecx, 0x34
jne case.0x453ab3.42
sub esp, 8
fstp qword [esp]
call fcn.0042e8a0
fstp qword [esi]
mov dword [esi + 8], ebx
jmp 0x45430a
fld qword [ebp - 0x44]
fucompp
fnstsw ax
test ah, 0x44
jp 0x453b43
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jmp 0x45430a
xor eax, eax
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jmp 0x45430a
fld qword [ebp - 0x44]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x453b43
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jmp 0x45430a
fcomp qword [ebp - 0x44]
fnstsw ax
test ah, 0x41
jne 0x453b43
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jmp 0x45430a
fcomp qword [ebp - 0x44]
fnstsw ax
test ah, 5
jp 0x453b43
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jmp 0x45430a
fcomp qword [ebp - 0x44]
fnstsw ax
test ah, 1
jne 0x453b43
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jmp 0x45430a
fcomp qword [ebp - 0x44]
fnstsw ax
test ah, 0x41
jp 0x453b43
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jmp 0x45430a
fldz
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x453c02
mov edi, 1
jmp 0x453c04
xor edi, edi
fld st(1)
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x453c2d
fcomp qword [ebp - 0x44]
fnstsw ax
test ah, 0x41
jne 0x453c2f
fstp st(0)
xor ebx, ebx
mov dword [esi], 0x4a596c
mov dword [esi + 8], ebx
jmp 0x45430a
fstp st(0)
test edi, edi
je 0x453c59
fstp st(0)
sub esp, 0x10
fld1
fstp qword [esp + 8]
fld qword [ebp - 0x44]
fstp qword [esp]
call fcn.0042e8d0
fldz
fucompp
fnstsw ax
test ah, 0x44
jp 0x453c1d
fld qword [ebp - 0x4c]
fchs
fld qword [ebp - 0x44]
sub esp, 0x10
fstp qword [esp + 8]
fstp qword [esp]
call fcn.0042e840
fstp qword [esi]
test edi, edi
je 0x453afd
fld qword [0x4b7710]
sub esp, 0x10
fstp qword [esp + 8]
fld qword [ebp - 0x44]
fstp qword [esp]
call fcn.0042e8d0
sub esp, 8
fstp qword [esp]
call fcn.0042e830
fld1
fucompp
fnstsw ax
test ah, 0x44
jp 0x453afd
fld qword [esi]
mov dword [esi + 8], ebx
fchs
fstp qword [esi]
jmp 0x45430a
mov eax, dword [esi + 8]
add eax, 0xffffffdd
cmp eax, 2
ja 0x453d16
mov eax, ebx
call fcn.0044b290
mov edi, eax
mov eax, dword [ebp - 0x1c]
call fcn.0044b290
test edi, edi
jne 0x453cd9
test eax, eax
je 0x453d16
xor ecx, ecx
cmp edi, eax
sete cl
xor edx, edx
cmp dword [esi + 8], 0x25
setne dl
cmp edx, ecx
jne 0x453d01
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], eax
jmp 0x454334
xor eax, eax
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], 1
jmp 0x454334
lea ecx, [ebp - 0xfb4]
mov eax, ebx
call fcn.0044b130
mov edi, eax
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x294]
mov dword [ebp - 0x28], edi
call fcn.0044b130
mov ecx, dword [esi + 8]
add ecx, 0xffffffdd
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], 1
cmp ecx, 7
ja case.default.0x453d4f
jmp dword [ecx*4 + 0x4549e4]
mov ecx, dword [0x4bd41c]
cmp byte [ecx + 0xe9], 0
push edi
push eax
jne 0x453d71
call fcn.00486339
add esp, 8
jmp 0x453d77
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x453d8c
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x454304
xor eax, eax
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x454304
mov cx, word [eax]
cmp cx, word [edi]
jne 0x453dc6
test cx, cx
je 0x453dc2
mov cx, word [eax + 2]
cmp cx, word [edi + 2]
jne 0x453dc6
add eax, 4
add edi, 4
test cx, cx
jne case.0x453d4f.36
xor eax, eax
jmp 0x453dcb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x453d8c
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x454304
mov edx, dword [0x4bd41c]
mov cl, byte [edx + 0xe9]
test cl, cl
jne 0x453e0e
push edi
push eax
call fcn.00486339
xor ecx, ecx
add esp, 8
test eax, eax
setne cl
mov eax, ecx
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x454304
cmp cl, 2
jne 0x453e30
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
xor ecx, ecx
test eax, eax
setne cl
mov eax, ecx
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x454304
mov cx, word [eax]
cmp cx, word [edi]
jne 0x453e68
test cx, cx
je 0x453e52
mov cx, word [eax + 2]
cmp cx, word [edi + 2]
jne 0x453e68
add eax, 4
add edi, 4
test cx, cx
jne 0x453e30
xor eax, eax
xor ecx, ecx
test eax, eax
setne cl
mov eax, ecx
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x454304
sbb eax, eax
sbb eax, 0xffffffff
xor ecx, ecx
test eax, eax
setne cl
mov eax, ecx
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x454304
mov edx, dword [0x4bd41c]
mov cl, byte [edx + 0xe9]
test cl, cl
jne 0x453e9d
push edi
push eax
call fcn.00486339
add esp, 8
jmp 0x453edb
cmp cl, 2
jne 0x453eb0
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x453edb
mov cx, word [eax]
cmp cx, word [edi]
jne 0x453ed6
test cx, cx
je 0x453ed2
mov cx, word [eax + 2]
cmp cx, word [edi + 2]
jne 0x453ed6
add eax, 4
add edi, 4
test cx, cx
jne 0x453eb0
xor eax, eax
jmp 0x453edb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jle 0x453d8c
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x454304
mov ecx, dword [0x4bd41c]
mov cl, byte [ecx + 0xe9]
test cl, cl
jne 0x453f10
push edi
push eax
call fcn.00486339
add esp, 8
jmp 0x453f4b
cmp cl, 2
jne 0x453f20
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x453f4b
mov cx, word [eax]
cmp cx, word [edi]
jne 0x453f46
test cx, cx
je 0x453f42
mov cx, word [eax + 2]
cmp cx, word [edi + 2]
jne 0x453f46
add eax, 4
add edi, 4
test cx, cx
jne 0x453f20
xor eax, eax
jmp 0x453f4b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jns 0x453d8c
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x454304
mov edx, dword [0x4bd41c]
mov cl, byte [edx + 0xe9]
test cl, cl
jne 0x453f80
push edi
push eax
call fcn.00486339
add esp, 8
jmp 0x453fbb
cmp cl, 2
jne 0x453f90
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x453fbb
mov cx, word [eax]
cmp cx, word [edi]
jne 0x453fb6
test cx, cx
je 0x453fb2
mov cx, word [eax + 2]
cmp cx, word [edi + 2]
jne 0x453fb6
add eax, 4
add edi, 4
test cx, cx
jne 0x453f90
xor eax, eax
jmp 0x453fbb
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, 0xffffffff
jle 0x453d8c
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x454304
mov ecx, dword [0x4bd41c]
mov cl, byte [ecx + 0xe9]
test cl, cl
jne 0x453ff1
push edi
push eax
call fcn.00486339
add esp, 8
jmp 0x45402b
cmp cl, 2
jne 0x454000
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x45402b
mov cx, word [eax]
cmp cx, word [edi]
jne 0x454026
test cx, cx
je 0x454022
mov cx, word [eax + 2]
cmp cx, word [edi + 2]
jne 0x454026
add eax, 4
add edi, 4
test cx, cx
jne 0x454000
xor eax, eax
jmp 0x45402b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, 1
jge 0x453d8c
mov eax, 1
xor ecx, ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x454304
cmp dword [ebx + 8], 3
jne 0x454057
mov eax, dword [ebx]
call fcn.00412aa0
mov dword [ebp - 0x14], eax
jmp 0x454072
lea ecx, [edi + 2]
lea ebx, [ebx]
mov ax, word [edi]
add edi, 2
test ax, ax
jne 0x454060
sub edi, ecx
sar edi, 1
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x68]
test edi, edi
je 0x454090
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x28]
push edx
push eax
mov eax, edi
call fcn.0046e340
test eax, eax
jne 0x45432b
mov ecx, dword [ebp - 0x1c]
cmp dword [ecx + 8], 3
jne 0x4540a4
mov edx, ecx
mov eax, dword [edx]
call fcn.00412aa0
jmp 0x4540bf
mov eax, dword [ebp - 0x38]
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4540b0
sub eax, edx
sar eax, 1
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
lea edx, [ecx + eax + 1]
mov dword [ebp - 0x40], edx
test edi, edi
jne 0x45422d
mov edi, dword [ebp - 0x64]
test edi, edi
je 0x4540f6
cmp dword [ebp - 0x18], 0
jne 0x4540f6
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x18], 0x40
jne 0x4540f6
mov dword [ebp - 0x48], 1
jmp 0x45413b
mov ecx, dword [ebp - 0x20]
cmp dword [ecx + 0x18], 0x12
jne 0x45422d
cmp dword [ebp - 0x18], 0
je 0x45422d
mov edx, dword [ebp - 0x48]
mov eax, dword [edx - 4]
cmp dword [eax + 8], 3
jne 0x45422d
mov edi, dword [eax]
mov al, byte [edi + 0x17]
test al, al
jne 0x45412c
mov eax, dword [edi + 0xc]
mov al, byte [eax + 0x17]
cmp al, 1
jne 0x45422d
mov dword [ebp - 0x48], 0
test edi, edi
je 0x45422d
push 0
push 0
mov ecx, edi
call fcn.00401240
cmp eax, dword [ebp - 0x38]
jne 0x45419a
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x28]
push ecx
push edx
mov eax, edi
call fcn.0046e340
test eax, eax
je 0x45422d
cmp dword [ebp - 0x48], 0
jne case.default.0x4545e6
mov eax, dword [ebp - 0x20]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + eax*4 - 0xdb8]
mov edx, dword [ecx]
dec eax
mov dword [ebp - 0x18], eax
mov dword [esi], edx
jmp 0x45432d
cmp eax, dword [ebp - 0x28]
je 0x45422d
mov eax, dword [ebp - 0x40]
push 1
push 0
dec eax
push eax
push 0
mov ecx, edi
call fcn.0046dd60
test eax, eax
je 0x4546e2
push 0
push 1
mov ecx, edi
call fcn.00401240
mov ebx, eax
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x4541e5
mov edx, dword [ebp - 0x38]
lea ecx, [eax + eax]
push ecx
push edx
push ebx
call fcn.00489760
mov eax, dword [ebp - 0x2c]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
lea edx, [ecx + ecx + 2]
mov ecx, dword [ebp - 0x28]
push edx
push ecx
lea edx, [ebx + eax*2]
push edx
call fcn.00489760
add esp, 0xc
cmp byte [edi + 0x17], 0
jne 0x454206
mov edi, dword [edi + 0xc]
cmp byte [edi + 0x17], 2
jne 0x454224
cmp dword [0x4c3158], 0
je 0x454224
mov ecx, 0x4c314c
call fcn.00403d50
jmp 0x45416a
and byte [edi + 0x15], 0x86
jmp 0x45416a
mov eax, dword [ebp - 0x54]
mov edx, dword [ebp + 0x1c]
mov edi, dword [ebp - 0x40]
mov ecx, eax
sub ecx, dword [edx]
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
sar ecx, 1
sub edx, ecx
cmp edi, edx
ja 0x454251
mov dword [esi], eax
lea eax, [eax + edi*2]
mov dword [ebp - 0x54], eax
jmp 0x4542a3
cmp edi, 0x1001
jae 0x454273
cmp dword [ebp - 0x30], 0x9c40
jae 0x454273
lea eax, [edi + edi]
call fcn.00491130
add dword [ebp - 0x30], edi
mov eax, esp
mov dword [esi], eax
jmp 0x4542a3
cmp dword [ebp - 0x24], 0xc8
je 0x4546ce
lea ecx, [edi + edi]
push ecx
call fcn.004863c4
mov edx, dword [ebp - 0x24]
add esp, 4
mov dword [ebp + edx*4 - 0x5b4], eax
mov dword [esi], eax
test eax, eax
je 0x4546ce
inc dword [ebp - 0x24]
mov edi, dword [ebp - 0x2c]
test edi, edi
je 0x4542bd
mov ecx, dword [ebp - 0x38]
mov edx, dword [esi]
lea eax, [edi + edi]
push eax
push ecx
push edx
call fcn.00489760
add esp, 0xc
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x28]
lea ecx, [eax + eax + 2]
mov eax, dword [esi]
push ecx
push edx
lea ecx, [eax + edi*2]
push ecx
call fcn.00489760
mov edx, dword [ebp - 0x1c]
xor eax, eax
add esp, 0xc
cmp dword [edx + 8], eax
je 0x4542f2
cmp dword [ebx + 8], eax
je 0x4542f2
mov dword [ebp - 0x14], 4
mov dword [esi + 4], eax
jmp 0x454304
mov dword [ebp - 0x14], eax
jmp 0x454304
mov dword [esi], 0x4a596c
mov dword [ebp - 0x14], 0
mov eax, dword [ebp - 0x14]
mov dword [esi + 8], eax
cmp dword [ebp - 0x68], 0
je 0x454334
mov edi, dword [ebp - 0x68]
mov eax, esi
call fcn.0046d770
mov al, byte [edi + 0x17]
test al, al
jne 0x454327
mov ecx, dword [edi + 0xc]
mov al, byte [ecx + 0x17]
cmp al, 2
je 0x454334
mov dword [esi], edi
mov dword [esi + 8], 3
cmp dword [esi + 0xc], 0
je 0x454415
mov eax, dword [esi + 8]
cmp eax, 5
ja case.0x45434a.1
jmp dword [eax*4 + 0x454a04]
mov edi, dword [esi]
cmp byte [edi + 0x17], 0
jne 0x45435c
mov edi, dword [edi + 0xc]
movzx eax, byte [edi + 0x15]
and eax, 0x70
cmp eax, 0x10
je 0x4543ad
cmp eax, 0x20
je 0x4543a0
cmp eax, 0x40
je case.0x45434a.0
push 0
push 1
push 0
push 1
push 0
push 1
mov ecx, edi
call fcn.00401240
call fcn.0046b180
add esp, 0x10
test eax, eax
jne case.0x45434a.1
mov cl, byte [edi + 0x15]
test cl, cl
js case.0x45434a.1
or cl, 0x40
mov byte [edi + 0x15], cl
jmp case.0x45434a.1
mov eax, 2
jmp case.0x45434a.1
cmp dword [esi + 4], 0
je 0x4543b4
mov eax, 1
jmp case.0x45434a.1
push 0
push 1
push 0
push 1
xor ecx, ecx
mov eax, esi
call fcn.0044b130
call fcn.0046b180
add esp, 0x10
jmp case.0x45434a.1
xor eax, eax
mov ecx, eax
mov eax, esi
call fcn.0044ad80
mov ecx, dword [esi + 0xc]
cmp dword [ecx + 8], 0x1f
je 0x454455
xor edx, edx
cmp dword [ecx + 8], 0x20
sete dl
cmp eax, edx
jne 0x45445f
mov dword [ebp - 0x20], ecx
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je 0x454400
cmp dword [ecx + 8], 0x1f
jne 0x4543e3
cdq
mov dword [esi + 8], 1
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esi + 0xc], ecx
jmp 0x454334
mov edi, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x18]
cmp edi, ebx
jle 0x45443c
nop
mov eax, dword [ebp + edi*4 - 0xdb8]
dec edi
cmp dword [eax + 8], 5
jne 0x454438
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp edi, ebx
jg 0x454420
mov edi, dword [ebp - 0x20]
inc ebx
mov dword [ebp + ebx*4 - 0xdb8], esi
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x6c], ebx
add edi, 0x10
jmp 0x452ad3
test eax, eax
jne 0x45445f
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x20], eax
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x18]
add edi, 0x10
jmp 0x452ad3
mov ecx, dword [esi]
mov edx, dword [ecx + 0x18]
push edx
jmp 0x4546d3
mov eax, dword [ebp + 0x10]
cmp dword [eax], 1
je 0x454483
mov dword [ebp - 0x34], edi
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x60]
cmp eax, edi
je case.default.0x4545e6
lea ecx, [ebp - 0x58]
push ecx
lea edx, [ebp - 0x5c]
push edx
push eax
call fcn.0046e5f0
add esp, 0xc
jmp case.default.0x4545e6
mov esi, dword [esi + 0xc]
cmp esi, edi
je 0x4544bb
push esi
call fcn.00487975
add esp, 4
lea eax, [ebp - 0x60]
mov dword [ebp - 4], 0xffffffff
call fcn.00454fe0
jmp case.default.0x4545e6
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 4]
push ecx
mov ecx, dword [ebp + 8]
push edx
push str.Out_of_memory.__The_current_thread_will_exit.
call fcn.0042d460
lea eax, [ebp - 0x60]
mov dword [ebp - 4], 0xffffffff
call fcn.00454fe0
jmp 0x4546e2
mov edx, dword [ebp - 0x28]
mov eax, dword [edx + 4]
mov ecx, dword [ebp + 8]
push eax
push 0
push str.Out_of_memory.__The_current_thread_will_exit.
call fcn.0042d460
lea eax, [ebp - 0x60]
mov dword [ebp - 4], 0xffffffff
call fcn.00454fe0
jmp 0x4546e2
mov ecx, dword [ebp + 8]
mov cl, byte [ecx]
cmp cl, 3
je case.default.0x4545e6
cmp ebx, 1
jne 0x452ca2
mov edi, dword [ebp - 0x64]
mov eax, dword [ebp - 0xdb4]
mov ebx, eax
test edi, edi
je 0x454552
call fcn.0046d770
jmp case.default.0x4545e6
cmp cl, 0x12
je 0x4547c8
cmp cl, 0x6a
je 0x4547c8
mov edx, dword [ebp + 0x14]
test edx, edx
je 0x4545d2
mov ecx, dword [eax + 8]
cmp ecx, 1
je 0x4545bb
cmp ecx, 2
je 0x4545bb
cmp ecx, 5
je 0x4545bb
cmp ecx, 3
jne 0x4545d2
mov ecx, dword [eax]
cmp byte [ecx + 0x17], 0
jne 0x45458d
mov ecx, dword [ecx + 0xc]
test byte [ecx + 0x15], 2
je 0x4545d2
mov dword [edx + 8], 5
mov eax, dword [eax]
cmp byte [eax + 0x17], 0
jne 0x4545a5
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov dword [edx], eax
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x4a596c
jmp 0x454833
mov dword [edx + 8], ecx
mov ecx, dword [eax]
mov dword [edx], ecx
mov eax, dword [eax + 4]
mov dword [edx + 4], eax
mov eax, 0x4a596c
jmp 0x454833
mov esi, dword [ebp + 0x18]
mov ecx, dword [eax + 8]
mov edi, dword [esi]
mov dword [ebp - 0x34], edi
cmp ecx, 5
ja case.default.0x4545e6
jmp dword [ecx*4 + 0x454a1c]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push ecx
push edx
call fcn.00401050
add esp, 8
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x454600
sub eax, edx
sar eax, 1
lea eax, [eax + eax + 2]
add dword [esi], eax
jmp case.default.0x4545e6
mov ecx, dword [0x4bd41c]
fld qword [eax]
sub esp, 8
add ecx, 0x74
fstp qword [esp]
push ecx
mov esi, 0x100
call fcn.0046b300
lea edx, [eax + eax + 2]
mov eax, dword [ebp + 0x18]
add esp, 0xc
add dword [eax], edx
jmp case.default.0x4545e6
cmp ecx, 3
jne 0x454665
mov ecx, dword [eax]
push 0
push 1
call fcn.00401240
mov esi, eax
mov eax, dword [ebx]
mov dword [ebp + 0x14], esi
call fcn.00412aa0
jmp 0x454682
mov eax, dword [eax]
mov dword [ebp + 0x14], eax
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x454670
mov esi, dword [ebp + 0x14]
sub eax, edx
sar eax, 1
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 8]
lea ebx, [eax + 1]
mov eax, dword [ebp + 0xc]
add eax, eax
movzx eax, word [edx + eax*8 + 2]
mov ecx, 0xff
cmp ax, cx
jae 0x4546a1
mov eax, ecx
mov edx, dword [ebp + 0x28]
lea eax, [eax + edx + 1]
cmp ebx, eax
jbe 0x4547aa
mov ecx, dword [ebp + 0x20]
mov esi, dword [ecx]
sub esi, eax
add esi, ebx
lea edx, [esi + esi]
push edx
mov dword [ebp + 0x28], esi
call fcn.004863c4
mov edi, eax
add esp, 4
test edi, edi
jne 0x4546f7
push 0x4a596c
mov ecx, dword [ebp + 8]
push 0
push str.Out_of_memory.__The_current_thread_will_exit.
call fcn.0042d460
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x34], 0
mov dword [eax], 0
jmp case.default.0x4545e6
cmp esi, 0x400000
jbe 0x454705
inc dword [0x4c30a8]
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x18]
mov eax, dword [ecx]
mov esi, dword [edx]
sub esi, eax
sar esi, 1
je 0x454723
lea ecx, [esi + esi]
push ecx
push eax
push edi
call fcn.00489760
add esp, 0xc
mov edx, dword [ebp + 0x18]
lea eax, [edi + esi*2]
lea ecx, [ebx + ebx]
mov dword [edx], eax
mov edx, dword [ebp + 0x14]
push ecx
push edx
push eax
mov dword [ebp - 0x34], eax
call fcn.00489760
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax]
add esp, 0xc
push ecx
call fcn.00487975
mov edx, dword [ebp + 0x20]
mov eax, dword [edx]
add esp, 4
cmp eax, 0x400000
jbe 0x45475f
dec dword [0x4c30a8]
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ecx]
xor ecx, ecx
lea eax, [edx + eax*2]
mov dword [ebp + 8], eax
cmp dword [ebp + 0xc], ecx
jle 0x454793
mov eax, dword [ebp + 0x24]
mov eax, dword [eax + ecx*4]
cmp eax, edx
jb 0x45478d
cmp eax, dword [ebp + 8]
jae 0x45478d
mov esi, dword [ebp + 0x24]
sub eax, edx
sar eax, 1
lea eax, [edi + eax*2]
mov dword [esi + ecx*4], eax
inc ecx
cmp ecx, dword [ebp + 0xc]
jl 0x454771
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x28]
mov eax, dword [ebp + 0x20]
mov dword [ecx], edi
mov edi, dword [ebp + 0x18]
mov dword [eax], edx
lea edx, [ebx + ebx]
add dword [edi], edx
jmp case.default.0x4545e6
mov edi, dword [ebp + 0x18]
mov eax, dword [edi]
cmp eax, esi
je 0x4547c1
lea ecx, [ebx + ebx]
push ecx
push esi
push eax
call fcn.00486da0
add esp, 0xc
lea edx, [ebx + ebx]
add dword [edi], edx
jmp case.default.0x4545e6
mov ecx, dword [eax + 8]
cmp ecx, 5
ja case.default.0x4547d4
jmp dword [ecx*4 + 0x454a34]
mov ecx, dword [eax]
or ecx, dword [eax + 4]
jne case.0x4547d4.5
mov dword [ebp - 0x34], 0x4a596c
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x454809
mov eax, dword [ebp + esi*4 - 0x5b8]
dec esi
push eax
call fcn.00487975
add esp, 4
test esi, esi
jne 0x4547f4
mov esi, dword [ebp - 0x6c]
test esi, esi
je 0x454830
mov edi, 5
mov eax, dword [ebp + esi*4 - 0xdb8]
dec esi
cmp dword [eax + 8], edi
jne 0x45482c
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
test esi, esi
jne 0x454815
mov eax, dword [ebp - 0x34]
lea esp, [ebp - 0xfc4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24
fld qword [eax]
fldz
fucompp
fnstsw ax
test ah, 0x44
jp case.0x4547d4.5
jmp case.0x4545e6.5
mov ecx, dword [eax + 4]
test ecx, ecx
je case.0x4547d4.0
mov edx, dword [ecx]
or edx, dword [ecx + 4]
jmp 0x4547e0
mov eax, dword [eax]
call fcn.0044aca0
jmp 0x454881
mov esi, dword [eax]
call fcn.0044ad00
jmp 0x454881
mov eax, dword [ebp + 8]
test eax, eax
je case.0x4545e6.5
mov dword [ebp - 0x34], 0x49e30c
jmp case.default.0x4545e6