Function at 0x10014d1b
Capabilities:
Check for software breakpoints
Encode data using xor
Encrypt data using speck
Resolve function by parsing pe exports
Validate payment card number using luhn algorithm

Disassembly:
sub esp, 0x1cc
mov ax, word [0x453c0590]
push ebx
push ebp
xor ebx, ebx
push esi
push edi
xor ebp, ebp
mov edi, 0x452f6a68
mov esi, 0x45400da0
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x94], ebx
mov word [esp + 0x6c], ax
je 0x10016173
mov eax, dword [0x453e0d24]
push eax
push 0xa
lea ecx, [esp + 0x5c]
push 1
push ecx
call fcn.10028910
push 3
lea edx, [esp + 0x68]
push 0x452f8b5c
push edx
call fcn.10027c60
add esp, 0x1c
test eax, eax
je 0x10016173
push 3
lea eax, [esp + 0x58]
push 0x452f8b58
push eax
call fcn.10027c60
add esp, 0xc
test eax, eax
je 0x10016173
push 4
lea ecx, [esp + 0x58]
push 0x452f8b50
push ecx
call fcn.10027c60
add esp, 0xc
test eax, eax
je 0x10016173
push 4
lea edx, [esp + 0x58]
push 0x452f8b48
push edx
call fcn.10027c60
add esp, 0xc
test eax, eax
je 0x10016173
push 2
lea eax, [esp + 0x58]
push 0x452f8b44
push eax
call fcn.10027c60
add esp, 0xc
test eax, eax
je 0x10016099
push 3
lea ecx, [esp + 0x58]
push 0x452f8b40
push ecx
call fcn.10027c60
add esp, 0xc
test eax, eax
je 0x10016099
mov edi, 0x452f6a70
lea esi, [esp + 0x54]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10014884
mov eax, dword [0x453e0d24]
push eax
call fcn.10028cd0
add esp, 4
mov dword [esp + 0x1e0], eax
call fcn.10002b60
mov word [0x453c0590], ax
call fcn.10002b60
cmp ax, 0x2a
jne 0x10016167
call fcn.10002bb0
push 1
add eax, 0xfffffff8
push eax
jmp 0x10014940
mov edi, 0x452f8b38
lea esi, [esp + 0x54]
mov ecx, 8
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x100148d2
mov eax, dword [0x453e0d24]
push eax
call fcn.10028cd0
mov ecx, dword [0x453e0d24]
push 1
sub eax, 0xa
push 0xfffffffffffffffe
push ecx
mov dword [esp + 0x1f0], eax
call fcn.10028b60
add esp, 0x10
call fcn.10002b60
mov word [0x453c0590], ax
call fcn.10002b60
jmp 0x1001494f
push 4
lea edx, [esp + 0x58]
push 0x452f8b30
push edx
call fcn.10027c60
add esp, 0xc
test eax, eax
je 0x10014933
mov edi, 0x452f8b24
lea esi, [esp + 0x54]
mov ecx, 0xa
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10014933
push 8
lea ecx, [esp + 0x58]
push 0x452f8b18
push ecx
call fcn.10027c60
add esp, 0xc
test eax, eax
jne 0x10014a37
mov edx, dword [0x453e0d24]
push edx
call fcn.10028cd0
add esp, 4
sub eax, 0xa
mov dword [esp + 0x1e0], eax
push 1
mov word [0x453c0590], 0x4949
push 2
mov ecx, dword [0x453e0d24]
push ecx
call fcn.10028b60
add esp, 0xc
call fcn.10002b60
movzx eax, ax
cmp eax, 0x3e8
mov dword [esp + 0x78], eax
ja 0x10016173
test eax, eax
mov dx, word [0x453c0590]
mov word [esp + 0x68], dx
je 0x10016167
mov eax, dword [esp + 0x1e4]
shl eax, 0x10
mov dword [esp + 0x84], eax
jmp 0x10014990
mov ax, word [esp + 0x68]
mov esi, dword [esp + 0x1e0]
sub dword [esp + 0x78], 1
lea ecx, [esp + 0x7c]
push ecx
lea edx, [esp + 0x68]
push edx
mov word [0x453c0590], ax
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x54]
push ecx
push esi
call fcn.10014560
mov ebx, dword [esp + 0x5c]
or ebx, dword [esp + 0x98]
mov edi, dword [esp + 0x64]
mov ebp, dword [esp + 0x78]
add esp, 0x14
cmp ebx, 2
mov dword [esp + 0x48], ebx
jne 0x10014b20
push 0x452f8b10
push 0x45400da0
call fcn.10027d70
add esp, 8
test eax, eax
je 0x10015064
fld dword [0x452f8514]
fld dword [0x45400dec]
fucompp
fnstsw ax
test ah, 0x44
jp 0x10015064
call fcn.10002b60
call fcn.10002b60
movzx edx, ax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fstp dword [0x45400dec]
jmp 0x10015064
mov edi, 0x452f8b08
lea esi, [esp + 0x54]
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10014b11
mov edi, 0x452f8b00
lea esi, [esp + 0x54]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x10014b11
mov edi, 0x452f6a44
lea esi, [esp + 0x54]
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10014b11
mov edi, 0x452f8af8
lea esi, [esp + 0x54]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x10014b11
mov edi, 0x452f8af4
lea esi, [esp + 0x54]
mov ecx, 4
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10014b01
mov edi, 0x452f8af0
lea esi, [esp + 0x54]
mov ecx, 4
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x10014b01
mov eax, dword [0x453e0d24]
push 1
push 0xfffffffffffffff6
push eax
call fcn.10028b60
push 7
push 0x452f8ae8
push 0x45400da0
call fcn.10027c60
add esp, 0x18
test eax, eax
jne 0x1001494f
mov ecx, dword [0x453e0d24]
push ecx
call fcn.10028cd0
add esp, 4
mov dword [esp + 0x1e0], eax
jmp 0x1001494f
mov edx, dword [0x453e0d24]
push 1
push 0xfffffffffffffffc
push edx
jmp 0x10014947
mov eax, dword [0x453e0d24]
push 1
push 0xfffffffffffffffe
push eax
jmp 0x10014947
cmp ebx, 4
jne 0x10014c81
cmp ebp, 0x1a
jbe 0x10014c89
cmp ebp, 0x23
jae 0x10014c89
call fcn.10002bb0
call fcn.10002b60
movzx ecx, ax
cmp ecx, 0x7fff
je 0x10014ba7
fld dword [0x452f8514]
fld dword [0x45400dec]
fucompp
fnstsw ax
test ah, 0x44
jp 0x10014ba7
test ecx, ecx
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
jge 0x10014b77
fadd qword [0x452f8508]
fmul qword [0x452f8ae0]
sub esp, 0x10
fsub qword [0x452f8ad8]
fstp qword [esp + 8]
fld qword [0x452f8a20]
fstp qword [esp]
call fcn.1002e426
fmul qword [0x452f8ad0]
add esp, 0x10
fstp dword [0x45400dec]
call fcn.10002b60
call fcn.10002b60
movzx ecx, ax
cmp ecx, 0x7fff
je 0x10014c07
fld dword [0x452f8514]
fld dword [0x453e0cf4]
fucompp
fnstsw ax
test ah, 0x44
jp 0x10014c07
test ecx, ecx
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
jge 0x10014be3
fadd qword [0x452f8508]
fmul qword [0x452f8ac8]
sub esp, 0x10
fstp qword [esp + 8]
fld qword [0x452f8a20]
fstp qword [esp]
call fcn.1002e426
fstp dword [0x453e0cf4]
add esp, 0x10
call fcn.10002b60
movzx ecx, ax
cmp ecx, 0xffff
je 0x10014c5b
fld dword [0x452f8514]
fld dword [0x453c08c8]
fucompp
fnstsw ax
test ah, 0x44
jp 0x10014c5b
movsx eax, cx
mov dword [esp + 0x10], eax
sub esp, 0x10
fild dword [esp + 0x20]
fmul qword [0x452f8ac0]
fstp qword [esp + 8]
fld qword [0x452f8a20]
fstp qword [esp]
call fcn.1002e426
fstp dword [0x453c08c8]
add esp, 0x10
call fcn.10002b60
call fcn.10002b60
movzx ecx, ax
mov dword [esp + 0x70], ecx
call fcn.10002b60
call fcn.10002b60
movzx edx, ax
mov dword [0x453c0a64], edx
jmp 0x10014c89
cmp ebx, 0x114
jne 0x10014cfd
push 6
push 0x452f8ab4
push 0x45400da0
call fcn.10027c60
add esp, 0xc
test eax, eax
jne 0x10014cfd
mov ecx, dword [0x453e0d24]
mov eax, ebx
sub eax, 4
neg eax
sbb eax, eax
and eax, 0x14
push 1
add eax, 0x8c
push eax
push ecx
call fcn.10028b60
add esp, 0xc
call fcn.10002b60
movzx eax, ax
cmp eax, 0x48
je 0x10014cf3
cmp eax, 0x4c
je 0x10014ce7
cmp eax, 0x52
jne 0x10014cfd
mov dword [0x453e0d20], 5
jmp 0x10014cfd
mov dword [0x453e0d20], 6
jmp 0x10014cfd
mov dword [0x453e0d20], 0
cmp ebx, 7
jne 0x10014d2f
cmp edi, 2
jne 0x10015064
cmp ebp, 0x14
jbe 0x10015064
mov edx, dword [0x453e0d24]
push edx
push 0x40
push 0x45400ea0
call fcn.10029ef0
add esp, 0xc
jmp 0x10015064
cmp ebx, 8
jne 0x10014d4c
cmp edi, 4
jne 0x10015064
call fcn.10002bb0
mov dword [0x453c0a64], eax
jmp 0x10015064
cmp ebx, 9
jne 0x10014d7f
mov edi, 0x452f6ac8
mov esi, 0x45400da0
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x10015064
mov ecx, dword [0x453e0d24]
push ecx
push 1
push 0x40
push 0x453c0980
jmp 0x1001505c
cmp ebx, 0xc
jne 0x10014db9
cmp ebp, 4
jne 0x10015064
xor esi, esi
nop
push edi
call fcn.10002c40
mov edx, esi
shr edx, 1
lea eax, [esi + esi]
or edx, eax
and edx, 3
add esi, 1
fstp dword [edx*4 + 0x453c0ac0]
add esp, 4
cmp esi, 3
jb 0x10014d90
jmp 0x10015064
cmp ebx, 0xd
jne 0x10014ec7
cmp edi, 7
jne 0x10015064
call fcn.10002b60
cmp ax, 0xaaaa
jne 0x10015064
mov edx, dword [0x453e0d24]
mov ecx, dword [0x453c0430]
mov edi, 2
mov esi, edi
lea ecx, [ecx]
cmp edi, ebp
jae 0x10014e43
cmp edx, 0x3ec
jne 0x10014e1f
cmp dword [0x453c04b8], 0
je 0x10014e1f
mov eax, dword [0x453c0434]
sub eax, ecx
cmp eax, 1
jl 0x10014e1f
movzx eax, byte [ecx]
add ecx, 1
mov dword [0x453c0430], ecx
jmp 0x10014e34
push edx
call fcn.10029e60
mov edx, dword [0x453e0d24]
mov ecx, dword [0x453c0430]
add esp, 4
shl esi, 8
or esi, eax
add edi, 1
cmp si, 0xbbbb
jne 0x10014df0
add edi, 4
lea esi, [ebp - 5]
cmp edi, esi
jae 0x10015064
call fcn.10002bb0
cmp eax, 0x101
jne 0x10014ebb
test ebp, ebp
mov edi, ebp
je 0x10014ebb
call fcn.10002bb0
mov eax, dword [0x453e0d24]
cmp eax, 0x3ec
jne 0x10014e9e
cmp dword [0x453c04b8], 0
je 0x10014e9e
mov edx, dword [0x453c0434]
mov ecx, dword [0x453c0430]
sub edx, ecx
cmp edx, 1
jl 0x10014e9e
movzx eax, byte [ecx]
add ecx, 1
mov dword [0x453c0430], ecx
jmp 0x10014ea7
push eax
call fcn.10029e60
add esp, 4
cmp eax, 3
jae 0x10014ebb
movsx eax, byte [eax + 0x452f8ab0]
sub eax, 0x30
mov dword [0x453e0d20], eax
add edi, 4
cmp edi, esi
jb 0x10014e51
jmp 0x10015064
cmp ebx, 0x10
jne 0x10014ee4
cmp edi, 4
jne 0x10015064
call fcn.10002bb0
mov dword [0x453c0598], eax
jmp 0x10015064
cmp ebx, 0x11
jne 0x10014f32
cmp dword [0x45400d84], 0
je 0x10015064
push 5
push 0x452f8b10
push 0x45400da0
call fcn.10027c60
add esp, 0xc
test eax, eax
jne 0x10015064
push eax
call fcn.10002bb0
mov ecx, dword [0x453e0d24]
add eax, esi
push eax
push ecx
call fcn.10028b60
push esi
call fcn.100171c0
jmp 0x10015061
cmp ebx, 0x14
jne 0x10015039
cmp edi, 7
jne 0x10015064
cmp ebp, 0xa00
jne 0x10014f67
mov edx, dword [0x453e0d24]
push 1
push 0x4e0
push edx
call fcn.10028b60
add esp, 0xc
jmp 0x10015d20
mov eax, dword [0x453e0d24]
push eax
push 0xa
lea ecx, [esp + 0x5c]
push 1
push ecx
call fcn.10028910
push 4
lea edx, [esp + 0x68]
push 0x452f8aa8
push edx
call fcn.10027c60
add esp, 0x1c
test eax, eax
jne 0x10015064
mov edi, 0x452f8aa0
lea esi, [esp + 0x58]
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10014fb0
sbb eax, eax
sbb eax, 0xffffffff
neg eax
sbb eax, eax
and eax, 0xfffffa24
add eax, 0x60a
push 1
push eax
mov eax, dword [0x453e0d24]
push eax
call fcn.10028b60
add esp, 0xc
call fcn.10002bb0
add eax, eax
add eax, eax
test eax, eax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
jge 0x10014fea
fadd dword [0x452f8600]
fstp dword [0x453c0ac0]
call fcn.10002bb0
mov esi, eax
call fcn.10002bb0
add esi, eax
test esi, esi
mov dword [esp + 0x10], esi
fild dword [esp + 0x10]
jge 0x10015010
fadd dword [0x452f8600]
fstp dword [0x453c0ac4]
call fcn.10002bb0
add eax, eax
add eax, eax
test eax, eax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
jge 0x10015031
fadd dword [0x452f8600]
fstp dword [0x453c0ac8]
jmp 0x10015064
cmp ebx, 0x15
jne 0x10015064
cmp edi, 2
jne 0x10015064
cmp dword [0x45400d84], 0
je 0x10015064
mov ecx, dword [0x453e0d24]
push ecx
push 1
push 0x40
push 0x453c09e0
call fcn.10028910
add esp, 0x10
push 0x452f8a98
push 0x45400da0
call fcn.10027d70
add esp, 8
test eax, eax
je 0x100150a6
cmp ebx, 0x1b
jne 0x10015090
mov dword [esp + 0x48], 0x1018
mov esi, dword [esp + 0x48]
jmp 0x10015caa
cmp ebx, 0x1c
jne 0x100150a6
mov dword [esp + 0x48], 0x1017
mov esi, dword [esp + 0x48]
jmp 0x10015c3e
cmp ebx, 0x1d
jne 0x10015140
nop
mov ecx, dword [0x453e0d24]
cmp ecx, 0x3ec
jne 0x100150e6
cmp dword [0x453c04b8], 0
je 0x100150e6
mov edx, dword [0x453c0434]
mov eax, dword [0x453c0430]
sub edx, eax
cmp edx, 1
jl 0x100150e6
movzx esi, byte [eax]
add eax, 1
mov dword [0x453c0430], eax
jmp 0x100150f1
push ecx
call fcn.10029e60
add esp, 4
mov esi, eax
test esi, esi
je 0x10015deb
cmp esi, 0xffffffff
je 0x10015deb
push esi
call fcn.10027dd0
add esp, 4
test eax, eax
je 0x10015122
mov eax, dword [esp + 0x74]
lea edx, [esi - 0x30]
lea eax, [eax + eax*4]
lea ecx, [edx + eax*2]
mov dword [esp + 0x74], ecx
jmp 0x100150b0
mov ecx, 0xa
mov eax, esi
xor edx, edx
div ecx
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*4]
lea ecx, [edx + eax*2]
mov dword [esp + 0x74], ecx
jmp 0x100150b0
cmp ebx, 0x81
jne 0x1001519b
mov esi, dword [esp + 0x50]
cmp esi, 4
jne 0x10015220
call fcn.10002bb0
mov edx, dword [0x453e0d24]
mov dword [0x453c0688], eax
push 0
add eax, 0x29
push eax
push edx
call fcn.10028b60
add esp, 0xc
call fcn.10002b60
add eax, eax
mov word [0x453c0680], ax
call fcn.10002b60
mov word [0x45400ee4], ax
mov dword [0x453c0ad0], 0x61616161
jmp 0x10015deb
cmp ebx, 0x29
jne 0x10015214
cmp dword [esp + 0x50], 1
jne 0x10015de3
mov eax, dword [esp + 0x70]
cmp eax, 0x12
jae 0x100151c0
movsx eax, byte [eax + 0x452f8a84]
sub eax, 0x30
jmp 0x100151c2
xor eax, eax
shl eax, 5
add eax, 8
push 1
push eax
mov eax, dword [0x453e0d24]
push eax
call fcn.10028b60
add esp, 0xc
xor esi, esi
jmp 0x100151e0
call fcn.10002bb0
test eax, eax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
jge 0x100151f7
fadd dword [0x452f8600]
mov ecx, esi
xor ecx, 2
shr ecx, 1
xor ecx, esi
add esi, 1
fstp dword [ecx*4 + 0x453c0ac0]
cmp esi, 4
jb 0x100151e0
jmp 0x10015deb
cmp ebx, 0x100
jne 0x1001522a
mov esi, dword [esp + 0x50]
cmp esi, 7
je 0x10015241
jmp 0x10015deb
cmp ebx, 0x280
jne 0x1001525d
cmp dword [esp + 0x50], 1
jne 0x10015de3
mov esi, dword [esp + 0x50]
mov edx, dword [0x453e0d24]
push edx
call fcn.10028cd0
add esp, 4
mov dword [0x453c058c], eax
mov dword [0x453c05a4], ebp
jmp 0x10015261
mov esi, dword [esp + 0x50]
cmp ebx, 0x88
jne 0x10015295
cmp esi, 4
jne 0x10015de3
call fcn.10002bb0
test eax, eax
mov dword [0x453c058c], eax
je 0x10015de3
add eax, dword [esp + 0x1e0]
mov dword [0x453c058c], eax
jmp 0x10015deb
cmp ebx, 0x89
jne 0x100152b5
cmp esi, 4
jne 0x10015de3
call fcn.10002bb0
mov dword [0x453c05a4], eax
jmp 0x10015deb
cmp ebx, 0x8c
je 0x100152c5
cmp ebx, 0x96
jne 0x100152d8
mov eax, dword [0x453e0d24]
push eax
call fcn.10028cd0
add esp, 4
mov dword [0x453c059c], eax
cmp ebx, 0x97
jne 0x10015437
mov ecx, dword [0x453c0430]
mov edi, dword [esp + 0x60]
mov esi, 4
mov eax, dword [0x453e0d24]
cmp eax, 0x3ec
jne 0x10015323
cmp dword [0x453c04b8], 0
je 0x10015323
mov edx, dword [0x453c0434]
sub edx, ecx
cmp edx, 1
jl 0x10015323
movzx eax, byte [ecx]
add ecx, 1
mov dword [0x453c0430], ecx
jmp 0x10015332
push eax
call fcn.10029e60
mov ecx, dword [0x453c0430]
add esp, 4
sub esi, 1
lea edx, [edi + edi*4]
lea edi, [eax + edx*2 - 0x30]
jne 0x100152f3
mov eax, edi
sub eax, 0x64
mov dword [esp + 0x60], edi
je 0x100153a3
sub eax, 2
je 0x10015393
sub eax, 1
jne 0x100153e8
mov eax, dword [0x453e0d24]
push 1
push 0x10
push eax
call fcn.10028b60
add esp, 0xc
xor esi, esi
jmp 0x10015370
call fcn.10002b60
movzx ecx, ax
mov dword [esp + 0x10], ecx
add esi, 4
cmp esi, 0x10
fild dword [esp + 0x10]
fstp dword [esi + 0x453c0abc]
jb 0x10015370
jmp 0x10015deb
mov edx, dword [0x453e0d24]
push 1
push 6
push edx
jmp 0x10015ef0
mov eax, dword [0x453e0d24]
push 1
push 0x44
push eax
call fcn.10028b60
add esp, 0xc
xor esi, esi
call fcn.10002b60
movzx ecx, ax
mov edx, esi
and edx, 1
mov eax, esi
mov dword [esp + 0x10], ecx
add edx, edx
shr eax, 1
fild dword [esp + 0x10]
or edx, eax
add esi, 1
cmp esi, 4
fstp dword [edx*4 + 0x453c0ac0]
jb 0x100153b7
jmp 0x10015deb
cmp edi, 0xc8
jb 0x10015deb
cmp dword [esp + 0x60], 0xcd
je 0x10015414
mov ecx, dword [0x453e0d24]
push 1
push 0x118
push ecx
call fcn.10028b60
add esp, 0xc
mov edx, dword [0x453e0d24]
push edx
push 1
lea eax, [esp + 0xa0]
push 0x144
push eax
call fcn.10028910
add esp, 0x10
jmp 0x10015deb
cmp ebx, 0xa1
jne 0x1001549a
cmp esi, 7
jne 0x10015de3
mov ecx, dword [0x453e0d24]
push 1
push 0x8c
push ecx
mov word [0x453c0590], 0x4949
call fcn.10028b60
add esp, 0xc
xor esi, esi
lea esp, [esp]
call fcn.10002bb0
test eax, eax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
jge 0x10015487
fadd dword [0x452f8600]
fstp dword [esi + 0x453c0ac0]
add esi, 4
cmp esi, 0xc
jb 0x10015470
jmp 0x10015deb
cmp ebx, 0xa4
jne 0x10015532
cmp esi, 3
jne 0x10015de3
mov eax, dword [esp + 0x70]
lea edx, [eax + eax*2]
mov eax, dword [0x453e0d24]
push 1
shl edx, 4
push edx
push eax
call fcn.10028b60
add esp, 0xc
xor esi, esi
mov edi, 0x4949
mov ecx, dword [0x453e0d24]
push ecx
push 2
lea edx, [esp + 0x4c]
push 1
push edx
mov byte [esp + 0x54], 0xff
mov byte [esp + 0x55], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], di
jne 0x10015508
mov ah, byte [esp + 0x45]
mov al, byte [esp + 0x44]
jmp 0x10015514
movzx cx, byte [esp + 0x45]
mov ah, byte [esp + 0x44]
or eax, ecx
movzx edx, ax
mov dword [esp + 0x10], edx
add esi, 4
cmp esi, 0xc
fild dword [esp + 0x10]
fstp dword [esi + 0x453c0abc]
jb 0x100154d1
jmp 0x10015deb
cmp ebx, 0xa7
jne 0x100157bd
mov eax, dword [esp + 0x60]
add eax, 0xffffff38
cmp eax, 0x11
jae 0x10015de3
mov ecx, dword [esp + 0x74]
and ecx, 0xff
cmp dword [0x453e0d24], 0x3ec
mov dl, byte [ecx + 0x452f1dc0]
mov byte [esp + 0x4f], dl
jne 0x1001559b
cmp dword [0x453c04b8], 0
je 0x1001559b
mov eax, dword [0x453c0434]
mov ecx, dword [0x453c0430]
mov edx, eax
sub edx, ecx
cmp edx, 1
jl 0x1001559b
movzx ebx, byte [ecx]
add ecx, 1
mov dword [0x453c0430], ecx
jmp 0x100155c2
mov eax, dword [0x453e0d24]
push eax
call fcn.10029e60
add esp, 4
cmp dword [0x453e0d24], 0x3ec
mov ebx, eax
jne 0x100155e2
mov ecx, dword [0x453c0430]
mov eax, dword [0x453c0434]
cmp dword [0x453c04b8], 0
je 0x100155e2
mov edx, eax
sub edx, ecx
cmp edx, 1
jl 0x100155e2
movzx edi, byte [ecx]
add ecx, 1
mov dword [0x453c0430], ecx
jmp 0x10015609
mov eax, dword [0x453e0d24]
push eax
call fcn.10029e60
add esp, 4
cmp dword [0x453e0d24], 0x3ec
mov edi, eax
jne 0x10015629
mov ecx, dword [0x453c0430]
mov eax, dword [0x453c0434]
cmp dword [0x453c04b8], 0
je 0x10015629
mov edx, eax
sub edx, ecx
cmp edx, 1
jl 0x10015629
movzx esi, byte [ecx]
add ecx, 1
mov dword [0x453c0430], ecx
jmp 0x10015650
mov eax, dword [0x453e0d24]
push eax
call fcn.10029e60
add esp, 4
cmp dword [0x453e0d24], 0x3ec
mov esi, eax
jne 0x1001566e
mov ecx, dword [0x453c0430]
mov eax, dword [0x453c0434]
cmp dword [0x453c04b8], 0
je 0x1001566e
sub eax, ecx
cmp eax, 1
jl 0x1001566e
movzx eax, byte [ecx]
add ecx, 1
mov dword [0x453c0430], ecx
jmp 0x1001567d
mov ecx, dword [0x453e0d24]
push ecx
call fcn.10029e60
add esp, 4
xor eax, esi
xor eax, edi
xor eax, ebx
mov dl, byte [eax + 0x452f1ec0]
mov al, byte [esp + 0x4f]
mov bl, 0x60
xor ecx, ecx
imul bl
add dl, al
xor byte [esp + ecx + 0x98], dl
add al, byte [esp + 0x4f]
add ecx, 1
cmp ecx, 0x144
jb 0x10015693
mov edx, dword [esp + 0x60]
movsx eax, byte [edx + 0x452f89a8]
mov si, word [0x453c0590]
sub eax, 0x30
mov ecx, eax
and ecx, 0xfffffffe
cmp si, 0x4949
jne 0x100156de
xor edx, edx
mov dh, byte [esp + ecx + 0x99]
mov dl, byte [esp + ecx + 0x98]
jmp 0x100156ee
movzx dx, byte [esp + ecx + 0x99]
mov dh, byte [esp + ecx + 0x98]
movzx edx, dx
mov dword [esp + 0x10], edx
and eax, 1
cmp si, 0x4949
fild dword [esp + 0x10]
fstp dword [eax*4 + 0x453c0ac0]
jne 0x1001571c
xor edx, edx
mov dh, byte [esp + ecx + 0x9b]
mov dl, byte [esp + ecx + 0x9a]
jmp 0x1001572c
movzx dx, byte [esp + ecx + 0x9b]
mov dh, byte [esp + ecx + 0x9a]
movzx edx, dx
mov dword [esp + 0x10], edx
mov edx, eax
xor edx, 1
cmp si, 0x4949
fild dword [esp + 0x10]
fstp dword [edx*4 + 0x453c0ac0]
jne 0x1001575c
xor edx, edx
mov dh, byte [esp + ecx + 0x9d]
mov dl, byte [esp + ecx + 0x9c]
jmp 0x1001576c
movzx dx, byte [esp + ecx + 0x9d]
mov dh, byte [esp + ecx + 0x9c]
movzx edx, dx
mov dword [esp + 0x10], edx
mov edx, eax
xor edx, 3
cmp si, 0x4949
fild dword [esp + 0x10]
lea ecx, [esp + ecx + 0x9e]
fstp dword [edx*4 + 0x453c0ac0]
jne 0x1001579a
xor edx, edx
mov dh, byte [ecx + 1]
mov dl, byte [ecx]
jmp 0x100157a1
movzx dx, byte [ecx + 1]
mov dh, byte [ecx]
mov ecx, edx
movzx ecx, cx
mov dword [esp + 0x10], ecx
xor eax, 2
fild dword [esp + 0x10]
fstp dword [eax*4 + 0x453c0ac0]
jmp 0x10015de7
cmp ebx, 0x200
jne 0x10015852
cmp ebp, 3
jne 0x100157e2
call fcn.10002bb0
call fcn.10002bb0
mov dword [0x453c0a64], eax
jmp 0x10015deb
cmp ebp, 4
jne 0x10015de3
xor esi, esi
mov edi, 0x4949
mov edx, dword [0x453e0d24]
push edx
push 2
lea eax, [esp + 0x44]
push 1
push eax
mov byte [esp + 0x4c], 0xff
mov byte [esp + 0x4d], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], di
jne 0x10015829
mov ah, byte [esp + 0x3d]
mov al, byte [esp + 0x3c]
jmp 0x10015835
movzx cx, byte [esp + 0x3d]
mov ah, byte [esp + 0x3c]
or eax, ecx
movzx edx, ax
mov eax, esi
shr eax, 1
xor eax, esi
add esi, 1
cmp esi, 4
mov dword [eax*4 + 0x453c08b0], edx
jb 0x100157f2
jmp 0x10015deb
cmp ebx, 0x201
jne 0x10015868
cmp ebp, 4
je 0x10015ef8
jmp 0x10015deb
cmp ebx, 0x220
jne 0x10015892
cmp esi, 7
jne 0x10015de3
mov ecx, dword [0x453e0d24]
push ecx
call fcn.10028cd0
add esp, 4
mov dword [0x453c059c], eax
jmp 0x10015deb
cmp ebx, 0x401
jne 0x100158cf
cmp esi, 4
jne 0x10015de3
cmp ebp, esi
jne 0x10015de3
xor esi, esi
lea ecx, [ecx]
call fcn.10002bb0
mov edx, esi
shr edx, 1
xor edx, esi
add esi, 1
cmp esi, 4
mov dword [edx*4 + 0x453c08b0], eax
jb 0x100158b0
jmp 0x10015deb
cmp ebx, 0xe01
jne 0x100159ad
mov eax, dword [0x453e0d24]
push 1
push 0x16
push eax
mov word [0x453c0590], 0x4949
call fcn.10028b60
add esp, 0xc
cmp ebp, 0x2c
mov edi, 0x16
jbe 0x10015de3
call fcn.10002bb0
mov ecx, dword [0x453e0d24]
push 1
mov ebx, eax
push 0xe
push ecx
mov dword [esp + 0x54], ebx
call fcn.10028b60
add esp, 0xc
call fcn.10002bb0
mov esi, eax
sub esi, 4
cmp ebx, 0x76a43207
jne 0x1001598d
mov edx, dword [0x453e0d24]
push edx
push 2
lea eax, [esp + 0x28]
push 1
push eax
mov byte [esp + 0x30], 0xff
mov byte [esp + 0x31], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], 0x4949
jne 0x10015976
mov ah, byte [esp + 0x21]
mov al, byte [esp + 0x20]
movzx edx, ax
mov dword [0x453e0d20], edx
jmp 0x1001599e
movzx cx, byte [esp + 0x21]
mov ah, byte [esp + 0x20]
or eax, ecx
movzx edx, ax
mov dword [0x453e0d20], edx
jmp 0x1001599e
mov eax, dword [0x453e0d24]
push 1
push esi
push eax
call fcn.10028b60
add esp, 0xc
lea edi, [edi + esi + 0x16]
lea ecx, [edi + 0x16]
cmp ecx, ebp
jb 0x10015904
cmp ebx, 0xe80
jne 0x10015ab2
cmp ebp, 0x100
jne 0x10015de3
cmp dword [esp + 0x50], 7
jne 0x10015de3
mov edx, dword [0x453e0d24]
push 1
push 0x30
push edx
call fcn.10028b60
mov eax, dword [0x453e0d24]
push eax
push 2
lea ecx, [esp + 0x48]
push 1
push ecx
mov byte [esp + 0x50], 0xff
mov byte [esp + 0x51], 0xff
call fcn.10028910
mov esi, 0x4949
add esp, 0x1c
xor eax, eax
cmp word [0x453c0590], si
jne 0x10015a1b
mov ah, byte [esp + 0x35]
mov al, byte [esp + 0x34]
jmp 0x10015a27
movzx dx, byte [esp + 0x35]
mov ah, byte [esp + 0x34]
or eax, edx
mov edx, dword [0x453e0d24]
movzx eax, ax
mov ecx, eax
shl ecx, 7
sub ecx, eax
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x10], ecx
push edx
push 2
fild dword [esp + 0x18]
lea eax, [esp + 0x30]
push 1
push eax
fmul qword [0x452f8a68]
mov byte [esp + 0x38], 0xff
mov byte [esp + 0x39], 0xff
fstp dword [0x453c0ac0]
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], si
jne 0x10015a80
mov ah, byte [esp + 0x29]
mov al, byte [esp + 0x28]
jmp 0x10015a8c
movzx cx, byte [esp + 0x29]
mov ah, byte [esp + 0x28]
or eax, ecx
movzx eax, ax
lea edx, [eax + eax*2]
shl edx, 6
sub edx, eax
add edx, edx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fmul qword [0x452f8a60]
fstp dword [0x453c0ac8]
jmp 0x10015deb
cmp ebx, 0xf00
jne 0x10015b16
cmp dword [esp + 0x50], 7
jne 0x10015de3
cmp ebp, 0x266
jne 0x10015ae7
mov eax, dword [0x453e0d24]
push 1
push 0xb0
push eax
call fcn.10028b60
add esp, 0xc
jmp 0x10015d20
cmp ebp, 0x2de
je 0x10015afb
cmp ebp, 0x5de
jne 0x10016073
mov ecx, dword [0x453e0d24]
push 1
push 0x94
push ecx
call fcn.10028b60
add esp, 0xc
jmp 0x10015d20
cmp ebx, 0x1011
jne 0x10015b28
cmp ebp, 9
je 0x10015b34
jmp 0x10015deb
cmp ebx, 0x20400200
jne 0x10015bb0
mov ebx, 0x453c05c0
mov ebp, 3
mov edi, edi
mov esi, ebx
mov edi, 3
mov edx, dword [0x453e0d24]
push edx
push 2
lea eax, [esp + 0x40]
push 1
push eax
mov byte [esp + 0x48], 0xff
mov byte [esp + 0x49], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], 0x4949
jne 0x10015b80
mov ah, byte [esp + 0x39]
mov al, byte [esp + 0x38]
jmp 0x10015b8c
movzx cx, byte [esp + 0x39]
mov ah, byte [esp + 0x38]
or eax, ecx
movsx edx, ax
mov dword [esp + 0x10], edx
add esi, 4
sub edi, 1
fild dword [esp + 0x10]
fmul qword [0x452f8a58]
fstp dword [esi - 4]
jne 0x10015b47
add ebx, 0x10
sub ebp, 1
jne 0x10015b40
mov eax, dword [esp + 0x48]
cmp eax, 0x1012
je 0x10015bc2
cmp eax, 0x20400600
jne 0x10015c2a
cmp dword [esp + 0x64], 4
jne 0x10015c2a
xor esi, esi
mov edi, 0x4949
mov eax, dword [0x453e0d24]
push eax
push 2
lea ecx, [esp + 0x38]
push 1
push ecx
mov byte [esp + 0x40], 0xff
mov byte [esp + 0x41], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], di
jne 0x10015c06
mov ah, byte [esp + 0x31]
mov al, byte [esp + 0x30]
jmp 0x10015c12
movzx dx, byte [esp + 0x31]
mov ah, byte [esp + 0x30]
or eax, edx
mov ecx, esi
shr ecx, 1
xor ecx, esi
movzx eax, ax
add esi, 1
cmp esi, 4
mov dword [ecx*4 + 0x453c08b0], eax
jb 0x10015bd0
mov esi, dword [esp + 0x48]
cmp esi, 0x1017
je 0x10015c3e
cmp esi, 0x20400100
jne 0x10015c9a
mov edx, dword [0x453e0d24]
push edx
push 2
lea eax, [esp + 0x48]
push 1
push eax
mov byte [esp + 0x50], 0xff
mov byte [esp + 0x51], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], 0x4949
jne 0x10015c77
mov ah, byte [esp + 0x41]
mov al, byte [esp + 0x40]
jmp 0x10015c83
movzx cx, byte [esp + 0x41]
mov ah, byte [esp + 0x40]
or eax, ecx
movzx edx, ax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fmul qword [0x452f8a58]
fstp dword [0x453c0ac0]
cmp esi, 0x1018
je 0x10015caa
cmp esi, 0x20400100
jne 0x10015d05
mov eax, dword [0x453e0d24]
push eax
push 2
lea ecx, [esp + 0x1c]
push 1
push ecx
mov byte [esp + 0x24], 0xff
mov byte [esp + 0x25], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], 0x4949
jne 0x10015ce2
mov ah, byte [esp + 0x15]
mov al, byte [esp + 0x14]
jmp 0x10015cee
movzx dx, byte [esp + 0x15]
mov ah, byte [esp + 0x14]
or eax, edx
movzx eax, ax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul qword [0x452f8a58]
fstp dword [0x453c0ac8]
cmp esi, 0x2011
jne 0x10015de3
cmp dword [esp + 0x64], 2
jne 0x10015de3
mov ebp, dword [esp + 0x64]
mov ecx, dword [0x453e0d24]
push ecx
push 2
lea edx, [esp + 0x20]
push 1
push edx
mov word [0x453c0590], 0x4d4d
mov byte [esp + 0x28], 0xff
mov byte [esp + 0x29], 0xff
call fcn.10028910
mov esi, 0x4949
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], si
jne 0x10015d65
mov ah, byte [esp + 0x19]
mov al, byte [esp + 0x18]
jmp 0x10015d71
movzx cx, byte [esp + 0x19]
mov ah, byte [esp + 0x18]
or eax, ecx
movzx edx, ax
mov eax, dword [0x453e0d24]
mov dword [esp + 0x10], edx
push eax
push 2
fild dword [esp + 0x18]
lea ecx, [esp + 0x24]
push 1
push ecx
fmul qword [0x452f8a58]
mov byte [esp + 0x2c], 0xff
mov byte [esp + 0x2d], 0xff
fstp dword [0x453c0ac0]
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], si
jne 0x10015dbe
mov ah, byte [esp + 0x1d]
mov al, byte [esp + 0x1c]
jmp 0x10015dca
movzx dx, byte [esp + 0x1d]
mov ah, byte [esp + 0x1c]
or eax, edx
movzx eax, ax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul qword [0x452f8a58]
fstp dword [0x453c0ac8]
jmp 0x10015de7
mov ebp, dword [esp + 0x64]
mov ebx, dword [esp + 0x48]
mov ecx, ebx
or ecx, 0x70
cmp ecx, 0x2070
jne 0x10015e1d
cmp dword [esp + 0x50], 4
jne 0x10015e1d
push 0
call fcn.10002bb0
add eax, dword [esp + 0x1e4]
mov edx, dword [0x453e0d24]
push eax
push edx
call fcn.10028b60
add esp, 0xc
cmp ebx, 0x2020
jne 0x10015e44
mov eax, dword [esp + 0x1e0]
push 0x102
push 0x101
push eax
call fcn.10014660
add esp, 0xc
jmp 0x10016073
cmp ebx, 0x2040
jne 0x10015e62
mov ecx, dword [esp + 0x1e0]
push ebx
push ecx
call fcn.10014730
add esp, 8
jmp 0x10016073
cmp ebx, 0xb028
jne 0x10015e9f
push 0
call fcn.10002bb0
mov esi, dword [esp + 0x1e4]
mov edx, dword [0x453e0d24]
add eax, esi
push eax
push edx
call fcn.10028b60
push 0x89
push 0x88
push esi
call fcn.10014660
add esp, 0x18
jmp 0x10016073
cmp ebx, 0x4001
jne 0x10015fe9
cmp ebp, 0x1f4
jbe 0x10016073
cmp ebp, 0x246
jne 0x10015ec6
mov eax, 0x32
jmp 0x10015ee7
cmp ebp, 0x28d
jne 0x10015ed5
mov eax, 0x44
jmp 0x10015ee7
mov eax, ebp
sub eax, 0x1400
neg eax
sbb eax, eax
and al, 0xf0
add eax, 0x8e
push 1
push eax
mov eax, dword [0x453e0d24]
push eax
call fcn.10028b60
add esp, 0xc
xor esi, esi
mov edi, 0x4949
nop
mov ecx, dword [0x453e0d24]
push ecx
push 2
lea edx, [esp + 0x2c]
push 1
push edx
mov byte [esp + 0x34], 0xff
mov byte [esp + 0x35], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], di
jne 0x10015f37
mov ah, byte [esp + 0x25]
mov al, byte [esp + 0x24]
jmp 0x10015f43
movzx cx, byte [esp + 0x25]
mov ah, byte [esp + 0x24]
or eax, ecx
movzx edx, ax
mov eax, esi
shr eax, 1
mov dword [esp + 0x10], edx
xor eax, esi
add esi, 1
cmp esi, 4
fild dword [esp + 0x10]
fstp dword [eax*4 + 0x453c0ac0]
jb 0x10015f00
mov ecx, dword [0x453e0d24]
and ebp, 0xfffffff8
sub ebp, 0x520
neg ebp
sbb ebp, ebp
and ebp, 0xffffffa6
push 1
add ebp, 0x70
push ebp
push ecx
call fcn.10028b60
add esp, 0xc
xor esi, esi
lea ebx, [ebx]
mov edx, dword [0x453e0d24]
push edx
push 2
lea eax, [esp + 0x34]
push 1
push eax
mov byte [esp + 0x3c], 0xff
mov byte [esp + 0x3d], 0xff
call fcn.10028910
add esp, 0x10
xor eax, eax
cmp word [0x453c0590], di
jne 0x10015fc7
mov ah, byte [esp + 0x2d]
mov al, byte [esp + 0x2c]
jmp 0x10015fd3
movzx cx, byte [esp + 0x2d]
mov ah, byte [esp + 0x2c]
or eax, ecx
mov edx, esi
shr edx, 1
xor edx, esi
add esi, 1
cmp esi, 4
mov word [edx*2 + 0x45400d70], ax
jb 0x10015f90
cmp ebx, 0xa021
jne 0x10016021
xor esi, esi
call fcn.10002bb0
test eax, eax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
jge 0x1001600a
fadd dword [0x452f8600]
mov eax, esi
shr eax, 1
xor eax, esi
add esi, 1
fstp dword [eax*4 + 0x453c0ac0]
cmp esi, 4
jb 0x10015ff3
jmp 0x10016073
cmp ebx, 0xa028
jne 0x10016073
xor esi, esi
jmp 0x10016030
mov ecx, esi
shr ecx, 1
xor ecx, esi
mov edx, dword [ecx*4 + 0x453c0ac0]
lea edi, [ecx*4 + 0x453c0ac0]
mov dword [esp + 0x80], edx
call fcn.10002bb0
test eax, eax
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
jge 0x10016062
fadd dword [0x452f8600]
fsubr dword [esp + 0x80]
add esi, 1
cmp esi, 4
fstp dword [edi]
jb 0x10016030
mov eax, dword [esp + 0x7c]
mov ecx, dword [0x453e0d24]
push 0
push eax
push ecx
call fcn.10028b60
add esp, 0xc
cmp dword [esp + 0x78], 0
jne 0x10014990
jmp 0x10016167
mov edx, dword [0x453e0d24]
push edx
mov word [0x453c0590], 0x4d4d
call fcn.10028cd0
add esp, 4
cmp eax, dword [0x453c0688]
jae 0x10016167
lea ecx, [ecx]
cmp eax, 0x4000
jae 0x10016167
mov esi, ebx
mov ebx, ebp
mov ebp, dword [esp + 0x94]
call fcn.10002b60
cmp ebp, 0x100
movzx eax, ax
mov dword [esp + 0x94], eax
jne 0x1001614d
cmp eax, ebp
jne 0x1001614d
cmp esi, ebp
jbe 0x1001614d
cmp esi, 0x280
jae 0x1001614d
cmp ebx, ebp
jbe 0x1001614d
cmp ebx, 0x280
jae 0x1001614d
test esi, esi
mov dword [esp + 0x7c], esi
fild dword [esp + 0x7c]
jge 0x1001611b
fadd dword [0x452f8600]
test ebx, ebx
fstp dword [0x453c0ac0]
mov dword [esp + 0x7c], ebx
fild dword [esp + 0x7c]
mov dword [0x453c0ac4], 0x43800000
jge 0x1001613d
fadd dword [0x452f8600]
fstp dword [0x453c0ac8]
mov dword [0x453c0acc], 0x43800000
mov eax, dword [0x453e0d24]
push eax
call fcn.10028cd0
add esp, 4
cmp eax, dword [0x453c0688]
jb 0x100160c0
mov cx, word [esp + 0x6c]
mov word [0x453c0590], cx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1cc
ret