Function at 0x415654
Capabilities:
Check for software breakpoints
Encode data using xor
Encrypt data using speck
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffdec
xor eax, eax
xor edx, edx
xor ecx, ecx
push ebx
push esi
push edi
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ecx
lea edi, [ebp - 0x40]
mov ecx, 4
mov esi, 0x455414
mov edx, 0x45cd1d
rep movsd dword es:[edi], dword [esi]
mov ax, word [0x4a909c]
mov word [ebp - 0x26], ax
mov eax, 0x4a92f5
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4156b4
test cl, cl
je 0x4156ae
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4156b4
add eax, 2
add edx, 2
test cl, cl
jne 0x415692
je 0x416c3c
mov eax, dword [0x4a9094]
push eax
push 0xa
push 1
lea edx, [ebp - 0x30]
push edx
call fcn.004256d0
add esp, 0x10
lea ecx, [ebp - 0x30]
push 3
push 0x45cd23
push ecx
call fcn.00446930
add esp, 0xc
test eax, eax
je 0x416c3c
push 3
push 0x45cd27
lea eax, [ebp - 0x30]
push eax
call fcn.00446930
add esp, 0xc
test eax, eax
je 0x416c3c
push 4
push 0x45cd2b
lea edx, [ebp - 0x30]
push edx
call fcn.00446930
add esp, 0xc
test eax, eax
je 0x416c3c
push 4
push 0x45cd30
lea ecx, [ebp - 0x30]
push ecx
call fcn.00446930
add esp, 0xc
test eax, eax
je 0x416c3c
push 2
push 0x45cd35
lea eax, [ebp - 0x30]
push eax
call fcn.00446930
add esp, 0xc
test eax, eax
je 0x415768
push 3
push 0x45cd38
lea edx, [ebp - 0x30]
push edx
call fcn.00446930
add esp, 0xc
test eax, eax
jne 0x41582e
mov word [0x4a909c], 0x4d4d
jmp 0x415801
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x38], eax
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], edx
call fcn.00401580
movzx ecx, ax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x3c]
cmp eax, 0x100
jne 0x415801
mov edx, dword [ebp - 0x34]
cmp edx, 0x100
jne 0x415801
mov ecx, dword [ebp - 0x40]
cmp ecx, 0x100
jbe 0x415801
mov eax, dword [ebp - 0x40]
cmp eax, 0x280
jae 0x415801
mov edx, dword [ebp - 0x38]
cmp edx, 0x100
jbe 0x415801
mov ecx, dword [ebp - 0x38]
cmp ecx, 0x280
jae 0x415801
xor ebx, ebx
mov edx, 0x4cb684
lea eax, [ebp - 0x40]
mov ecx, dword [eax]
add eax, 4
mov dword [ebp - 0x18c], ecx
xor ecx, ecx
mov dword [ebp - 0x188], ecx
inc ebx
fild qword [ebp - 0x18c]
fstp dword [edx]
add edx, 4
cmp ebx, 4
jb 0x4157dd
mov eax, dword [0x4a9094]
push eax
call fcn.0042576c
pop ecx
mov esi, eax
mov edx, dword [0x4a9418]
cmp eax, edx
jae 0x416c31
cmp esi, 0x4000
jb 0x415776
jmp 0x416c31
lea eax, [ebp - 0x30]
mov edx, 0x45cd3c
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x41589d
test cl, cl
je 0x415852
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x41589d
add eax, 2
add edx, 2
test cl, cl
jne 0x415836
jne 0x41589d
mov eax, dword [0x4a9094]
push eax
call fcn.0042576c
pop ecx
mov dword [ebp + 8], eax
call fcn.00401580
mov word [0x4a909c], ax
call fcn.00401580
cmp ax, 0x2a
jne 0x416c31
call fcn.00401608
mov ebx, eax
push 1
sub ebx, 8
push ebx
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
jmp 0x415b05
lea eax, [ebp - 0x30]
mov edx, 0x45cd42
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4158c1
test cl, cl
je 0x4158e9
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4158c1
add eax, 2
add edx, 2
test cl, cl
jne 0x4158a5
je 0x4158e9
lea eax, [ebp - 0x30]
mov edx, 0x45cd4a
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x41592f
test cl, cl
je 0x4158e7
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x41592f
add eax, 2
add edx, 2
test cl, cl
jne 0x4158cb
jne 0x41592f
mov eax, dword [0x4a9094]
push eax
call fcn.0042576c
pop ecx
add eax, 0xfffffff6
mov dword [ebp + 8], eax
push 1
push 0xfffffffffffffffe
mov edx, dword [0x4a9094]
push edx
call fcn.00425620
add esp, 0xc
call fcn.00401580
mov word [0x4a909c], ax
mov cl, byte [ebp - 0x30]
cmp cl, 0x4f
jne 0x415b05
call fcn.00401580
jmp 0x415b05
push 4
push 0x45cd52
lea eax, [ebp - 0x30]
push eax
call fcn.00446930
add esp, 0xc
test eax, eax
je 0x415996
lea eax, [ebp - 0x30]
mov edx, 0x45cd57
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x41596c
test cl, cl
je 0x41596a
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x41596c
add eax, 2
add edx, 2
test cl, cl
jne 0x41594e
je 0x415996
push 8
push 0x45cd61
lea eax, [ebp - 0x30]
push eax
call fcn.00446930
add esp, 0xc
test eax, eax
jne 0x4159b7
mov edx, dword [0x4a9094]
push edx
call fcn.0042576c
pop ecx
add eax, 0xfffffff6
mov dword [ebp + 8], eax
mov word [0x4a909c], 0x4949
push 1
push 2
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
jmp 0x415b05
lea eax, [ebp - 0x30]
mov edx, 0x45cd6a
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4159df
test cl, cl
je 0x415a53
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4159df
add eax, 2
add edx, 2
test cl, cl
jne 0x4159bf
je 0x415a53
lea eax, [ebp - 0x30]
mov edx, str.LEICA
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x415a05
test cl, cl
je 0x415a53
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x415a05
add eax, 2
add edx, 2
test cl, cl
jne 0x4159e9
je 0x415a53
lea eax, [ebp - 0x30]
mov edx, 0x45cd76
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x415a2b
test cl, cl
je 0x415a53
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x415a2b
add eax, 2
add edx, 2
test cl, cl
jne 0x415a0f
je 0x415a53
lea eax, [ebp - 0x30]
mov edx, str.EPSON
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x415a6a
test cl, cl
je 0x415a51
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x415a6a
add eax, 2
add edx, 2
test cl, cl
jne 0x415a35
jne 0x415a6a
push 1
push 0xfffffffffffffffe
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
jmp 0x415b05
lea eax, [ebp - 0x30]
mov edx, 0x45cd82
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x415a8e
test cl, cl
je 0x415ab6
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x415a8e
add eax, 2
add edx, 2
test cl, cl
jne 0x415a72
je 0x415ab6
lea eax, [ebp - 0x30]
mov edx, 0x45cd86
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x415aca
test cl, cl
je 0x415ab4
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x415aca
add eax, 2
add edx, 2
test cl, cl
jne 0x415a98
jne 0x415aca
push 1
push 0xfffffffffffffffc
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
jmp 0x415b05
push 1
push 0xfffffffffffffff6
mov edx, dword [0x4a9094]
push edx
call fcn.00425620
add esp, 0xc
push 7
push str.SAMSUNG
push 0x4a92f5
call fcn.00446930
add esp, 0xc
test eax, eax
jne 0x415b05
mov ecx, dword [0x4a9094]
push ecx
call fcn.0042576c
pop ecx
mov dword [ebp + 8], eax
call fcn.00401580
movzx eax, ax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 4]
cmp edx, 0x3e8
ja 0x416c3c
mov cx, word [0x4a909c]
mov word [ebp - 0x24], cx
jmp 0x416c22
mov ax, word [ebp - 0x24]
mov word [0x4a909c], ax
lea edx, [ebp - 0x14]
push edx
lea ecx, [ebp - 0x10]
push ecx
lea eax, [ebp - 0xc]
push eax
lea edx, [ebp - 8]
push edx
mov ecx, dword [ebp + 8]
push ecx
call fcn.00415558
add esp, 0x14
mov eax, dword [ebp + 0xc]
shl eax, 0x10
or dword [ebp - 8], eax
mov edx, dword [ebp - 8]
cmp edx, 2
jne 0x415bac
push 0x45cd92
push 0x4a92f5
call fcn.00446b30
add esp, 8
test eax, eax
je 0x415bac
fld dword [0x4a9400]
fcomp dword [0x416c44]
fnstsw ax
sahf
jne 0x415bac
call fcn.00401580
call fcn.00401580
movzx edx, ax
mov dword [ebp - 0x190], edx
fild dword [ebp - 0x190]
fstp dword [0x4a9400]
mov ecx, dword [ebp - 8]
cmp ecx, 4
jne 0x415d09
mov eax, dword [ebp - 0x10]
cmp eax, 0x1a
jbe 0x415d09
mov edx, dword [ebp - 0x10]
cmp edx, 0x23
jae 0x415d09
call fcn.00401608
call fcn.00401580
mov esi, eax
movzx esi, si
cmp esi, 0x7fff
je 0x415c39
fld dword [0x4a9400]
fcomp dword [0x416c44]
fnstsw ax
sahf
jne 0x415c39
mov dword [ebp - 0x198], esi
xor edx, edx
mov dword [ebp - 0x194], edx
fild qword [ebp - 0x198]
fmul dword [0x416c48]
fsub dword [0x416c4c]
add esp, 0xfffffff8
fstp qword [esp]
push 0x40000000
push 0
call fcn.0044dc04
add esp, 0x10
fmul dword [0x416c50]
fstp dword [0x4a9400]
call fcn.00401580
call fcn.00401580
mov esi, eax
movzx esi, si
cmp esi, 0x7fff
je 0x415c96
fld dword [0x4a9408]
fcomp dword [0x416c44]
fnstsw ax
sahf
jne 0x415c96
mov dword [ebp - 0x1a0], esi
xor edx, edx
mov dword [ebp - 0x19c], edx
fild qword [ebp - 0x1a0]
fmul dword [0x416c54]
add esp, 0xfffffff8
fstp qword [esp]
push 0x40000000
push 0
call fcn.0044dc04
fstp dword [0x4a9408]
add esp, 0x10
call fcn.00401580
movzx esi, ax
cmp esi, 0xffff
je 0x415ce7
fld dword [0x4a9404]
fcomp dword [0x416c44]
fnstsw ax
sahf
jne 0x415ce7
movsx edx, si
mov dword [ebp - 0x1a4], edx
fild dword [ebp - 0x1a4]
fmul dword [0x416c58]
add esp, 0xfffffff8
fstp qword [esp]
push 0x40000000
push 0
call fcn.0044dc04
fstp dword [0x4a9404]
add esp, 0x10
call fcn.00401580
call fcn.00401580
movzx ecx, ax
mov dword [ebp - 0x20], ecx
call fcn.00401580
call fcn.00401580
movzx eax, ax
mov dword [0x4a9428], eax
mov edx, dword [ebp - 8]
cmp edx, 4
je 0x415d1c
mov ecx, dword [ebp - 8]
cmp ecx, 0x114
jne 0x415d92
push 6
push str.KONICA
push 0x4a92f5
call fcn.00446930
add esp, 0xc
test eax, eax
jne 0x415d92
push 1
mov eax, dword [ebp - 8]
cmp eax, 4
jne 0x415d45
mov edx, 0x8c
jmp 0x415d4a
mov edx, 0xa0
push edx
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
call fcn.00401580
sub ax, 0x48
je 0x415d72
sub ax, 4
je 0x415d7c
sub ax, 6
je 0x415d88
jmp 0x415d92
xor ecx, ecx
mov dword [0x4a9514], ecx
jmp 0x415d92
mov dword [0x4a9514], 6
jmp 0x415d92
mov dword [0x4a9514], 5
mov eax, dword [ebp - 8]
cmp eax, 7
jne 0x415dbf
mov edx, dword [ebp - 0xc]
cmp edx, 2
jne 0x415dbf
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x14
jbe 0x415dbf
mov eax, dword [0x4a9094]
push eax
push 0x40
push 0x4a9375
call fcn.00425728
add esp, 0xc
mov edx, dword [ebp - 8]
cmp edx, 8
jne 0x415dd9
mov ecx, dword [ebp - 0xc]
cmp ecx, 4
jne 0x415dd9
call fcn.00401608
mov dword [0x4a9428], eax
mov eax, dword [ebp - 8]
cmp eax, 9
jne 0x415e20
mov eax, 0x4a92f5
mov edx, 0x45cd9f
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x415e20
test cl, cl
je 0x415e07
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x415e20
add eax, 2
add edx, 2
test cl, cl
jne 0x415deb
jne 0x415e20
mov eax, dword [0x4a9094]
push eax
push 1
push 0x40
push 0x4a93b5
call fcn.004256d0
add esp, 0x10
mov edx, dword [ebp - 8]
cmp edx, 0xc
jne 0x415e56
mov ecx, dword [ebp - 0x10]
cmp ecx, 4
jne 0x415e56
xor ebx, ebx
mov eax, dword [ebp - 0xc]
push eax
call fcn.00401660
pop ecx
mov edx, ebx
mov ecx, ebx
add edx, edx
shr ecx, 1
inc ebx
or edx, ecx
and edx, 3
cmp ebx, 3
fstp dword [edx*4 + 0x4cb684]
jb 0x415e32
mov eax, dword [ebp - 8]
cmp eax, 0xd
jne 0x415eee
mov edx, dword [ebp - 0xc]
cmp edx, 7
jne 0x415eee
call fcn.00401580
cmp ax, 0xaaaa
jne 0x415eee
mov esi, 2
mov ebx, esi
jmp 0x415e96
mov eax, dword [0x4a9094]
push eax
call fcn.00448c18
shl ebx, 8
pop ecx
or eax, ebx
inc esi
mov ebx, eax
cmp bx, 0xbbbb
je 0x415ee1
mov edx, dword [ebp - 0x10]
cmp esi, edx
jb 0x415e82
jmp 0x415ee1
call fcn.00401608
cmp eax, 0x101
jne 0x415ee1
mov esi, dword [ebp - 0x10]
test esi, esi
je 0x415ee1
call fcn.00401608
mov ecx, dword [0x4a9094]
push ecx
call fcn.00448c18
pop ecx
mov ebx, eax
cmp ebx, 3
jae 0x415ee1
movsx eax, byte [ebx + 0x45cda5]
sub eax, 0x30
mov dword [0x4a9514], eax
add esi, 4
mov edx, dword [ebp - 0x10]
sub edx, 5
cmp esi, edx
jb 0x415ea6
mov ecx, dword [ebp - 8]
cmp ecx, 0x10
jne 0x415f08
mov eax, dword [ebp - 0xc]
cmp eax, 4
jne 0x415f08
call fcn.00401608
mov dword [0x4a9434], eax
mov edx, dword [ebp - 8]
cmp edx, 0x11
jne 0x415f57
mov ecx, dword [0x4a9478]
test ecx, ecx
je 0x415f57
push 5
push str.NIKON
push 0x4a92f5
call fcn.00446930
add esp, 0xc
test eax, eax
jne 0x415f57
push 0
call fcn.00401608
mov edx, dword [ebp + 8]
add eax, edx
push eax
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
mov ecx, dword [ebp + 8]
push ecx
call fcn.0041792c
pop ecx
mov eax, dword [ebp - 8]
cmp eax, 0x14
jne 0x416076
mov edx, dword [ebp - 0xc]
cmp edx, 7
jne 0x416076
mov ecx, dword [ebp - 0x10]
cmp ecx, 0xa00
jne 0x415f94
push 1
push 0x4e0
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
jmp 0x416968
mov edx, dword [0x4a9094]
push edx
push 0xa
push 1
lea ecx, [ebp - 0x30]
push ecx
call fcn.004256d0
add esp, 0x10
lea eax, [ebp - 0x30]
push 4
push str.NRW
push eax
call fcn.00446930
add esp, 0xc
test eax, eax
jne 0x416076
push 1
lea eax, [ebp - 0x2c]
mov edx, str.0100
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x415fec
test cl, cl
je 0x415ff5
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x415fec
add eax, 2
add edx, 2
test cl, cl
jne 0x415fd0
je 0x415ff5
mov eax, 0x2e
jmp 0x415ffa
mov eax, 0x60a
push eax
mov edx, dword [0x4a9094]
push edx
call fcn.00425620
add esp, 0xc
call fcn.00401608
shl eax, 2
xor ecx, ecx
mov dword [ebp - 0x1ac], eax
mov dword [ebp - 0x1a8], ecx
fild qword [ebp - 0x1ac]
fstp dword [0x4cb684]
call fcn.00401608
mov ebx, eax
call fcn.00401608
add ebx, eax
xor eax, eax
mov dword [ebp - 0x1b4], ebx
mov dword [ebp - 0x1b0], eax
fild qword [ebp - 0x1b4]
fstp dword [0x4cb688]
call fcn.00401608
shl eax, 2
xor edx, edx
mov dword [ebp - 0x1bc], eax
mov dword [ebp - 0x1b8], edx
fild qword [ebp - 0x1bc]
fstp dword [0x4cb68c]
mov ecx, dword [ebp - 8]
cmp ecx, 0x15
jne 0x4160a8
mov eax, dword [ebp - 0xc]
cmp eax, 2
jne 0x4160a8
mov edx, dword [0x4a9478]
test edx, edx
je 0x4160a8
mov ecx, dword [0x4a9094]
push ecx
push 1
push 0x40
push 0x4a9335
call fcn.004256d0
add esp, 0x10
push 0x45cdb9
push 0x4a92f5
call fcn.00446b30
add esp, 8
test eax, eax
je 0x4160dc
mov eax, dword [ebp - 8]
cmp eax, 0x1b
jne 0x4160cd
mov dword [ebp - 8], 0x1018
mov edx, dword [ebp - 8]
cmp edx, 0x1c
jne 0x4160dc
mov dword [ebp - 8], 0x1017
mov ecx, dword [ebp - 8]
cmp ecx, 0x1d
jne 0x41612a
jmp 0x416112
push ebx
call fcn.0044ae9c
pop ecx
test eax, eax
je 0x4160f8
mov eax, ebx
sub eax, 0x30
jmp 0x416105
mov eax, ebx
mov ecx, 0xa
xor edx, edx
div ecx
mov eax, edx
mov edx, dword [ebp - 0x1c]
add edx, edx
lea edx, [edx + edx*4]
add eax, edx
mov dword [ebp - 0x1c], eax
mov ecx, dword [0x4a9094]
push ecx
call fcn.00448c18
pop ecx
mov ebx, eax
test eax, eax
je 0x41612a
cmp ebx, 0xffffffff
jne 0x4160e6
mov edx, dword [ebp - 8]
cmp edx, 0x29
jne 0x41619b
mov ecx, dword [ebp - 0xc]
cmp ecx, 1
jne 0x41619b
mov eax, dword [ebp - 0x20]
cmp eax, 0x12
jae 0x416151
mov edx, dword [ebp - 0x20]
movsx ebx, byte [edx + str.012347800000005896]
sub ebx, 0x30
jmp 0x416153
xor ebx, ebx
shl ebx, 5
push 1
add ebx, 8
mov eax, dword [0x4a9094]
push ebx
push eax
call fcn.00425620
add esp, 0xc
xor ebx, ebx
call fcn.00401608
mov dword [ebp - 0x1c4], eax
mov edx, ebx
xor eax, eax
shr edx, 1
mov dword [ebp - 0x1c0], eax
xor edx, ebx
inc ebx
fild qword [ebp - 0x1c4]
xor edx, 1
cmp ebx, 4
fstp dword [edx*4 + 0x4cb684]
jb 0x41616c
mov ecx, dword [ebp - 8]
cmp ecx, 0x3d
jne 0x4161e0
mov eax, dword [ebp - 0xc]
cmp eax, 3
jne 0x4161e0
mov edx, dword [ebp - 0x10]
cmp edx, 4
jne 0x4161e0
xor ebx, ebx
call fcn.00401580
movzx eax, ax
mov edx, dword [0x4a9458]
mov ecx, 0xe
sub ecx, edx
mov edx, ebx
sar eax, cl
shr edx, 1
xor edx, ebx
inc ebx
cmp ebx, 4
mov word [edx*2 + 0x4a9560], ax
jb 0x4161b5
mov eax, dword [ebp - 8]
cmp eax, 0x81
jne 0x41623b
mov ecx, dword [ebp - 0xc]
cmp ecx, 4
jne 0x41623b
call fcn.00401608
mov ebx, eax
push 0
mov dword [0x4a9418], ebx
add ebx, 0x29
push ebx
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
call fcn.00401580
movzx edx, ax
add edx, edx
mov dword [0x4a9528], edx
call fcn.00401580
movzx ecx, ax
mov dword [0x4a952c], ecx
mov dword [0x4a951c], 0x61616161
mov eax, dword [ebp - 8]
cmp eax, 0x81
jne 0x41624d
mov edx, dword [ebp - 0xc]
cmp edx, 7
je 0x416273
mov ecx, dword [ebp - 8]
cmp ecx, 0x100
jne 0x416260
mov eax, dword [ebp - 0xc]
cmp eax, 7
je 0x416273
mov edx, dword [ebp - 8]
cmp edx, 0x280
jne 0x41628d
mov ecx, dword [ebp - 0xc]
cmp ecx, 1
jne 0x41628d
mov eax, dword [0x4a9094]
push eax
call fcn.0042576c
mov dword [0x4a941c], eax
mov edx, dword [ebp - 0x10]
mov dword [0x4a9438], edx
pop ecx
mov ecx, dword [ebp - 8]
cmp ecx, 0x88
jne 0x4162b7
mov eax, dword [ebp - 0xc]
cmp eax, 4
jne 0x4162b7
call fcn.00401608
mov dword [0x4a941c], eax
test eax, eax
je 0x4162b7
mov edx, dword [ebp + 8]
add dword [0x4a941c], edx
mov ecx, dword [ebp - 8]
cmp ecx, 0x89
jne 0x4162d4
mov eax, dword [ebp - 0xc]
cmp eax, 4
jne 0x4162d4
call fcn.00401608
mov dword [0x4a9438], eax
mov edx, dword [ebp - 8]
cmp edx, 0x8c
je 0x4162ea
mov ecx, dword [ebp - 8]
cmp ecx, 0x96
jne 0x4162fb
mov eax, dword [0x4a9094]
push eax
call fcn.0042576c
pop ecx
mov dword [0x4a9420], eax
mov edx, dword [ebp - 8]
cmp edx, 0x97
jne 0x416449
xor esi, esi
mov eax, dword [0x4a9094]
push eax
call fcn.00448c18
mov edx, dword [ebp - 0x18]
pop ecx
add edx, edx
inc esi
lea edx, [edx + edx*4]
add eax, edx
sub eax, 0x30
cmp esi, 4
mov dword [ebp - 0x18], eax
jb 0x41630c
mov ecx, dword [ebp - 0x18]
sub ecx, 0x64
je 0x416347
sub ecx, 2
je 0x41638b
dec ecx
je 0x4163c8
jmp 0x416401
push 1
push 0x44
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
xor ebx, ebx
call fcn.00401580
movzx eax, ax
mov edx, ebx
mov ecx, ebx
and ecx, 1
mov dword [ebp - 0x1c8], eax
shr edx, 1
add ecx, ecx
fild dword [ebp - 0x1c8]
or edx, ecx
inc ebx
cmp ebx, 4
fstp dword [edx*4 + 0x4cb684]
jb 0x41635b
jmp 0x416401
push 1
push 6
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
xor ebx, ebx
call fcn.00401580
movzx eax, ax
mov edx, ebx
mov dword [ebp - 0x1cc], eax
shr edx, 1
fild dword [ebp - 0x1cc]
xor edx, ebx
inc ebx
cmp ebx, 4
fstp dword [edx*4 + 0x4cb684]
jb 0x41639f
jmp 0x416401
push 1
push 0x10
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
xor ebx, ebx
mov edi, 0x4cb684
call fcn.00401580
movzx eax, ax
mov dword [ebp - 0x1d0], eax
fild dword [ebp - 0x1d0]
fstp dword [edi]
inc ebx
add edi, 4
cmp ebx, 4
jb 0x4163e2
mov edx, dword [ebp - 0x18]
cmp edx, 0xc8
jb 0x416449
mov ecx, dword [ebp - 0x18]
cmp ecx, 0xcd
je 0x41642c
push 1
push 0x118
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
mov edx, dword [0x4a9094]
push edx
push 1
push 0x144
lea ecx, [ebp - 0x184]
push ecx
call fcn.004256d0
add esp, 0x10
mov eax, dword [ebp - 8]
cmp eax, 0xa1
jne 0x4164a5
mov edx, dword [ebp - 0xc]
cmp edx, 7
jne 0x4164a5
mov word [0x4a909c], 0x4949
push 1
push 0x8c
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
xor ebx, ebx
mov edi, 0x4cb684
call fcn.00401608
mov dword [ebp - 0x1d8], eax
xor eax, eax
mov dword [ebp - 0x1d4], eax
fild qword [ebp - 0x1d8]
fstp dword [edi]
inc ebx
add edi, 4
cmp ebx, 3
jb 0x416481
mov edx, dword [ebp - 8]
cmp edx, 0xa4
jne 0x4164f9
mov ecx, dword [ebp - 0xc]
cmp ecx, 3
jne 0x4164f9
push 1
mov eax, dword [ebp - 0x20]
shl eax, 4
lea eax, [eax + eax*2]
push eax
mov edx, dword [0x4a9094]
push edx
call fcn.00425620
add esp, 0xc
xor ebx, ebx
mov edi, 0x4cb684
call fcn.00401580
movzx eax, ax
mov dword [ebp - 0x1dc], eax
fild dword [ebp - 0x1dc]
fstp dword [edi]
inc ebx
add edi, 4
cmp ebx, 3
jb 0x4164da
mov edx, dword [ebp - 8]
cmp edx, 0xa7
jne 0x4165e5
mov ecx, dword [ebp - 0x18]
sub ecx, 0xc8
cmp ecx, 0x11
jae 0x4165e5
mov eax, dword [ebp - 0x1c]
and eax, 0xff
mov bl, byte [eax + 0x455214]
mov eax, dword [0x4a9094]
push eax
call fcn.00448c18
pop ecx
mov esi, eax
mov eax, dword [0x4a9094]
push eax
call fcn.00448c18
pop ecx
xor esi, eax
mov edx, dword [0x4a9094]
push edx
call fcn.00448c18
pop ecx
xor esi, eax
mov ecx, dword [0x4a9094]
push ecx
call fcn.00448c18
xor esi, eax
pop ecx
lea edi, [ebp - 0x184]
mov al, byte [esi + 0x455314]
mov byte [ebp - 0x21], al
mov al, 0x60
xor esi, esi
xor edx, edx
xor ecx, ecx
mov cl, al
mov dl, bl
imul edx, ecx
add byte [ebp - 0x21], dl
inc eax
mov dl, byte [ebp - 0x21]
inc esi
xor byte [edi], dl
inc edi
cmp esi, 0x144
jb 0x416575
mov eax, dword [ebp - 0x18]
movsx esi, byte [eax + 0x45cd0b]
sub esi, 0x30
xor ebx, ebx
mov eax, esi
mov edx, ebx
add edx, edx
and eax, 0xfffffffe
add eax, edx
lea ecx, [ebp - 0x184]
add eax, ecx
push eax
call fcn.00401548
movzx eax, ax
mov edx, ebx
pop ecx
shr edx, 1
mov ecx, esi
mov dword [ebp - 0x1e0], eax
and ecx, 1
xor edx, ebx
inc ebx
fild dword [ebp - 0x1e0]
xor edx, ecx
cmp ebx, 4
fstp dword [edx*4 + 0x4cb684]
jb 0x4165a2
mov eax, dword [ebp - 8]
cmp eax, 0x200
jne 0x416606
mov edx, dword [ebp - 0x10]
cmp edx, 3
jne 0x416606
call fcn.00401608
call fcn.00401608
mov dword [0x4a9428], eax
mov ecx, dword [ebp - 8]
cmp ecx, 0x200
jne 0x416634
mov eax, dword [ebp - 0x10]
cmp eax, 4
jne 0x416634
xor ebx, ebx
call fcn.00401580
mov edx, ebx
shr edx, 1
xor edx, ebx
inc ebx
cmp ebx, 4
mov word [edx*2 + 0x4a9560], ax
jb 0x41661b
mov eax, dword [ebp - 8]
cmp eax, 0x201
jne 0x41666f
mov ecx, dword [ebp - 0x10]
cmp ecx, 4
jne 0x41666f
xor ebx, ebx
call fcn.00401580
movzx eax, ax
mov edx, ebx
mov dword [ebp - 0x1e4], eax
shr edx, 1
fild dword [ebp - 0x1e4]
xor edx, ebx
inc ebx
cmp ebx, 4
fstp dword [edx*4 + 0x4cb684]
jb 0x416648
mov ecx, dword [ebp - 8]
cmp ecx, 0x220
jne 0x416694
mov eax, dword [ebp - 0xc]
cmp eax, 7
jne 0x416694
mov edx, dword [0x4a9094]
push edx
call fcn.0042576c
pop ecx
mov dword [0x4a9420], eax
mov ecx, dword [ebp - 8]
cmp ecx, 0x401
jne 0x4166ca
mov eax, dword [ebp - 0xc]
cmp eax, 4
jne 0x4166ca
mov edx, dword [ebp - 0x10]
cmp edx, 4
jne 0x4166ca
xor ebx, ebx
call fcn.00401608
mov edx, ebx
shr edx, 1
xor edx, ebx
inc ebx
cmp ebx, 4
mov word [edx*2 + 0x4a9560], ax
jb 0x4166b1
mov eax, dword [ebp - 8]
cmp eax, 0xe01
jne 0x41675a
mov word [0x4a909c], 0x4949
push 1
push 0x16
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
mov ebx, 0x16
jmp 0x416750
call fcn.00401608
mov dword [ebp - 8], eax
push 1
push 0xe
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
call fcn.00401608
mov esi, eax
sub esi, 4
mov eax, dword [ebp - 8]
cmp eax, 0x76a43207
jne 0x416739
call fcn.00401580
movzx edx, ax
mov dword [0x4a9514], edx
jmp 0x41674b
push 1
push esi
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
add esi, 0x16
add ebx, esi
lea eax, [ebx + 0x16]
mov edx, dword [ebp - 0x10]
cmp eax, edx
jb 0x4166fb
mov ecx, dword [ebp - 8]
cmp ecx, 0xe80
jne 0x4167ee
mov eax, dword [ebp - 0x10]
cmp eax, 0x100
jne 0x4167ee
mov edx, dword [ebp - 0xc]
cmp edx, 7
jne 0x4167ee
push 1
push 0x30
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
call fcn.00401580
movzx eax, ax
mov edx, eax
shl edx, 7
sub edx, eax
shl edx, 2
mov dword [ebp - 0x1e8], edx
fild dword [ebp - 0x1e8]
fmul qword [0x416c5c]
fmul dword [0x416c64]
fstp dword [0x4cb684]
call fcn.00401580
movzx ecx, ax
lea eax, [ecx + ecx*2]
shl eax, 6
sub eax, ecx
add eax, eax
mov dword [ebp - 0x1ec], eax
fild dword [ebp - 0x1ec]
fmul qword [0x416c68]
fmul dword [0x416c64]
fstp dword [0x4cb68c]
mov edx, dword [ebp - 8]
cmp edx, 0xf00
jne 0x41685a
mov ecx, dword [ebp - 0xc]
cmp ecx, 7
jne 0x41685a
mov eax, dword [ebp - 0x10]
cmp eax, 0x266
jne 0x416826
push 1
push 0xb0
mov edx, dword [0x4a9094]
push edx
call fcn.00425620
add esp, 0xc
jmp 0x416968
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x2de
je 0x41683f
mov eax, dword [ebp - 0x10]
cmp eax, 0x5de
jne 0x416c0d
push 1
push 0x94
mov edx, dword [0x4a9094]
push edx
call fcn.00425620
add esp, 0xc
jmp 0x416968
mov ecx, dword [ebp - 8]
cmp ecx, 0x1011
jne 0x41686d
mov eax, dword [ebp - 0x10]
cmp eax, 9
je 0x416878
mov edx, dword [ebp - 8]
cmp edx, 0x20400200
jne 0x4168b2
xor esi, esi
xor ebx, ebx
mov edi, 0x4cb6a4
call fcn.00401580
movsx eax, ax
mov dword [ebp - 0x1f0], eax
fild dword [ebp - 0x1f0]
fmul dword [0x416c70]
mov edx, esi
shl edx, 4
fstp dword [edi + edx]
inc ebx
add edi, 4
cmp ebx, 3
jb 0x416881
inc esi
cmp esi, 3
jb 0x41687a
mov ecx, dword [ebp - 8]
cmp ecx, 0x1012
je 0x4168c7
mov eax, dword [ebp - 8]
cmp eax, 0x20400600
jne 0x4168ea
mov edx, dword [ebp - 0x10]
cmp edx, 4
jne 0x4168ea
xor ebx, ebx
call fcn.00401580
mov edx, ebx
shr edx, 1
xor edx, ebx
inc ebx
cmp ebx, 4
mov word [edx*2 + 0x4a9560], ax
jb 0x4168d1
mov eax, dword [ebp - 8]
cmp eax, 0x1017
je 0x4168ff
mov ecx, dword [ebp - 8]
cmp ecx, 0x20400100
jne 0x41691f
call fcn.00401580
movzx eax, ax
mov dword [ebp - 0x1f4], eax
fild dword [ebp - 0x1f4]
fmul dword [0x416c70]
fstp dword [0x4cb684]
mov edx, dword [ebp - 8]
cmp edx, 0x1018
je 0x416935
mov ecx, dword [ebp - 8]
cmp ecx, 0x20400100
jne 0x416955
call fcn.00401580
movzx eax, ax
mov dword [ebp - 0x1f8], eax
fild dword [ebp - 0x1f8]
fmul dword [0x416c70]
fstp dword [0x4cb68c]
mov edx, dword [ebp - 8]
cmp edx, 0x2011
jne 0x4169b1
mov ecx, dword [ebp - 0x10]
cmp ecx, 2
jne 0x4169b1
mov word [0x4a909c], 0x4d4d
call fcn.00401580
movzx eax, ax
mov dword [ebp - 0x1fc], eax
fild dword [ebp - 0x1fc]
fmul dword [0x416c70]
fstp dword [0x4cb684]
call fcn.00401580
movzx edx, ax
mov dword [ebp - 0x200], edx
fild dword [ebp - 0x200]
fmul dword [0x416c70]
fstp dword [0x4cb68c]
mov ecx, dword [ebp - 8]
or ecx, 0x70
cmp ecx, 0x2070
jne 0x4169ea
mov eax, dword [ebp - 0xc]
cmp eax, 4
je 0x4169cf
mov edx, dword [ebp - 0xc]
cmp edx, 0xd
jne 0x4169ea
push 0
call fcn.00401608
mov ecx, dword [ebp + 8]
add eax, ecx
push eax
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
mov edx, dword [ebp - 8]
cmp edx, 0x2020
jne 0x416a22
push 5
push str.OLYMP
lea ecx, [ebp - 0x30]
push ecx
call fcn.00446930
add esp, 0xc
test eax, eax
jne 0x416a22
push 0x102
push 0x101
mov eax, dword [ebp + 8]
push eax
call fcn.004155d4
add esp, 0xc
mov edx, dword [ebp - 8]
cmp edx, 0x2040
jne 0x416a3e
push 0x2040
mov ecx, dword [ebp + 8]
push ecx
call fcn.00415654
add esp, 8
mov eax, dword [ebp - 8]
cmp eax, 0xb028
jne 0x416a7a
push 0
call fcn.00401608
mov edx, dword [ebp + 8]
add eax, edx
push eax
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
push 0x89
push 0x88
mov eax, dword [ebp + 8]
push eax
call fcn.004155d4
add esp, 0xc
mov edx, dword [ebp - 8]
cmp edx, 0x4001
jne 0x416b49
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x1f4
jbe 0x416b49
mov eax, dword [ebp - 0x10]
cmp eax, 0x246
jne 0x416aa9
mov esi, 0x32
jmp 0x416ad0
mov eax, dword [ebp - 0x10]
cmp eax, 0x28d
jne 0x416aba
mov esi, 0x44
jmp 0x416ad0
mov eax, dword [ebp - 0x10]
cmp eax, 0x1400
jne 0x416acb
mov esi, 0x8e
jmp 0x416ad0
mov esi, 0x7e
push 1
push esi
mov eax, dword [0x4a9094]
push eax
call fcn.00425620
add esp, 0xc
xor ebx, ebx
call fcn.00401580
movzx eax, ax
mov edx, ebx
mov dword [ebp - 0x204], eax
shr edx, 1
fild dword [ebp - 0x204]
xor edx, ebx
inc ebx
cmp ebx, 4
fstp dword [edx*4 + 0x4cb684]
jb 0x416ae3
add esi, 0x12
mov ecx, dword [ebp - 0x10]
cmp esi, ecx
ja 0x416b49
call fcn.00401580
xor ebx, ebx
call fcn.00401580
mov edx, ebx
shr edx, 1
xor edx, ebx
inc ebx
cmp ebx, 4
mov word [edx*2 + 0x4cb5f2], ax
jb 0x416b1b
cmp word [0x4cb5f4], 0x492
je 0x416b49
add esi, 0xa
mov eax, dword [ebp - 0x10]
cmp esi, eax
jbe 0x416b14
mov ecx, dword [ebp - 8]
cmp ecx, 0x4021
jne 0x416b7c
call fcn.00401608
test eax, eax
je 0x416b7c
call fcn.00401608
test eax, eax
je 0x416b7c
xor ebx, ebx
mov edi, 0x4cb684
mov dword [edi], 0x44800000
inc ebx
add edi, 4
cmp ebx, 4
jb 0x416b6d
mov edx, dword [ebp - 8]
cmp edx, 0xa021
jne 0x416bb5
xor ebx, ebx
call fcn.00401608
mov dword [ebp - 0x20c], eax
xor eax, eax
mov edx, ebx
mov dword [ebp - 0x208], eax
shr edx, 1
fild qword [ebp - 0x20c]
xor edx, ebx
inc ebx
cmp ebx, 4
fstp dword [edx*4 + 0x4cb684]
jb 0x416b89
mov ecx, dword [ebp - 8]
cmp ecx, 0xa028
jne 0x416bf5
xor ebx, ebx
call fcn.00401608
mov dword [ebp - 0x214], eax
xor eax, eax
mov edx, ebx
mov dword [ebp - 0x210], eax
shr edx, 1
fild qword [ebp - 0x214]
xor edx, ebx
inc ebx
cmp ebx, 4
fsubr dword [edx*4 + 0x4cb684]
fstp dword [edx*4 + 0x4cb684]
jb 0x416bc2
mov ecx, dword [ebp - 8]
cmp ecx, 0xb001
jne 0x416c0d
call fcn.00401580
movzx eax, ax
mov dword [0x4a9434], eax
push 0
mov edx, dword [ebp - 0x14]
push edx
mov ecx, dword [0x4a9094]
push ecx
call fcn.00425620
add esp, 0xc
mov eax, dword [ebp - 4]
add dword [ebp - 4], 0xffffffff
test eax, eax
jne 0x415b2f
mov dx, word [ebp - 0x26]
mov word [0x4a909c], dx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret