Function at 0x100aa940
Capabilities:
Encode data using xor
Encrypt data using speck
Resolve function by parsing pe exports
Validate payment card number using luhn algorithm

Disassembly:
sub esp, 0x1a4
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1b4]
push edi
push 0xa
mov ax, word [esi + 0x6244]
mov ecx, dword [esi]
mov word [esp + 0x68], ax
mov eax, dword [esi + 4]
lea edx, [esp + 0x2c]
push 1
xor ebx, ebx
push edx
push eax
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x54], ebx
xor ebp, ebp
mov dword [esp + 0x60], ebx
call dword [ecx]
mov edi, dword [sym.imp.MSVCRT.dll_strncmp]
push 3
lea ecx, [esp + 0x3c]
push 0x100fcb60
push ecx
call edi
add esp, 0x1c
test eax, eax
je 0x100abb65
push 3
lea edx, [esp + 0x2c]
push 0x100fcb5c
push edx
call edi
add esp, 0xc
test eax, eax
je 0x100abb65
push 4
lea eax, [esp + 0x2c]
push str.IIII
push eax
call edi
add esp, 0xc
test eax, eax
je 0x100abb65
push 4
lea ecx, [esp + 0x2c]
push str.MMMM
push ecx
call edi
add esp, 0xc
test eax, eax
je 0x100abb65
push 2
lea edx, [esp + 0x2c]
push 0x100fcb48
push edx
call edi
add esp, 0xc
test eax, eax
je 0x100aba9a
push 3
lea eax, [esp + 0x2c]
push 0x100fcb44
push eax
call edi
add esp, 0xc
test eax, eax
je 0x100aba9a
mov edi, str.Nikon
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aaa53
test cl, cl
je 0x100aaa4f
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aaa53
add eax, 2
add edi, 2
test cl, cl
jne 0x100aaa2b
xor eax, eax
jmp 0x100aaa58
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100aaaa9
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x18]
push esi
mov dword [esp + 0x1c4], eax
call fcn.1009c5e0
push esi
mov word [esi + 0x6244], ax
call fcn.1009c5e0
add esp, 0xc
cmp ax, 0x2a
jne 0x100abb59
push esi
call fcn.1009c680
mov edx, dword [esi]
add eax, 0xfffffff8
push 1
push eax
mov eax, dword [esi + 4]
push eax
call dword [edx + 8]
add esp, 0x10
jmp 0x100aad3f
mov edi, str.OLYMPUS
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aaada
test cl, cl
je 0x100aaad6
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aaada
add eax, 2
add edi, 2
test cl, cl
jne 0x100aaab2
xor eax, eax
jmp 0x100aaadf
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100aab1e
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x18]
mov edx, dword [esi]
sub eax, 0xa
mov dword [esp + 0x1c0], eax
mov eax, dword [esi + 4]
push 1
push 0xfffffffffffffffe
push eax
call dword [edx + 8]
push esi
call fcn.1009c5e0
push esi
mov word [esi + 0x6244], ax
call fcn.1009c5e0
add esp, 0x18
jmp 0x100aad3f
mov edi, dword [sym.imp.MSVCRT.dll_strncmp]
push 8
lea ecx, [esp + 0x2c]
push str.FUJIFILM
push ecx
call edi
add esp, 0xc
test eax, eax
je 0x100aad26
push 4
lea edx, [esp + 0x2c]
push str.SONY
push edx
call edi
add esp, 0xc
test eax, eax
je 0x100aad26
mov edi, str.Panasonic
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aab87
test cl, cl
je 0x100aab83
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aab87
add eax, 2
add edi, 2
test cl, cl
jne 0x100aab5f
xor eax, eax
jmp 0x100aab8c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100aad26
mov edi, str.OLYMP
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aabc5
test cl, cl
je 0x100aabc1
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aabc5
add eax, 2
add edi, 2
test cl, cl
jne 0x100aab9d
xor eax, eax
jmp 0x100aabca
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100aad17
mov edi, str.LEICA
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aac03
test cl, cl
je 0x100aabff
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aac03
add eax, 2
add edi, 2
test cl, cl
jne 0x100aabdb
xor eax, eax
jmp 0x100aac08
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100aad17
mov edi, str.Ricoh
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aac41
test cl, cl
je 0x100aac3d
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aac41
add eax, 2
add edi, 2
test cl, cl
jne 0x100aac19
xor eax, eax
jmp 0x100aac46
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100aad17
mov edi, str.EPSON
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aac7f
test cl, cl
je 0x100aac7b
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aac7f
add eax, 2
add edi, 2
test cl, cl
jne 0x100aac57
xor eax, eax
jmp 0x100aac84
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100aad17
mov edi, 0x100fcb00
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aacbd
test cl, cl
je 0x100aacb9
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aacbd
add eax, 2
add edi, 2
test cl, cl
jne 0x100aac95
xor eax, eax
jmp 0x100aacc2
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100aad08
mov edi, 0x100fcafc
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100aacf7
test cl, cl
je 0x100aacf3
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100aacf7
add eax, 2
add edi, 2
test cl, cl
jne 0x100aaccf
xor eax, eax
jmp 0x100aacfc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100aad08
mov eax, dword [esi]
push 1
push 0xfffffffffffffff6
jmp 0x100aad35
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0xfffffffffffffffc
push eax
call dword [edx + 8]
jmp 0x100aad3c
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0xfffffffffffffffe
push edx
call dword [ecx + 8]
jmp 0x100aad3c
mov eax, dword [esi]
push 1
mov word [esi + 0x6244], 0x4949
push 2
mov ecx, dword [esi + 4]
push ecx
call dword [eax + 8]
add esp, 0xc
push esi
call fcn.1009c5e0
and eax, 0xffff
add esp, 4
cmp eax, 0x3e8
ja 0x100abb65
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x40], eax
je 0x100abb59
mov eax, dword [esp + 0x1c0]
shl eax, 0x10
mov dword [esp + 0x60], eax
mov ebx, dword [esp + 0x1bc]
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x1c]
push eax
lea edx, [esp + 0x1c]
push ecx
lea eax, [esp + 0x18]
push edx
push eax
push ebx
push esi
call fcn.100aa810
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x78]
or eax, edx
add esp, 0x18
cmp eax, 2
mov dword [esp + 0x10], eax
jne 0x100aade8
lea ecx, [esi + 0x6455]
push str.NIKON
push ecx
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
je 0x100aade8
push esi
call fcn.1009c5e0
push esi
call fcn.1009c5e0
add esp, 8
and eax, 0xffff
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fstp dword [esi + 0x6560]
mov eax, dword [esp + 0x10]
mov ebp, 4
cmp eax, ebp
jne 0x100aaf03
mov eax, dword [esp + 0x1c]
cmp eax, 0x1a
jbe 0x100ab080
cmp eax, 0x23
jae 0x100ab080
push esi
call fcn.1009c680
push esi
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0x40000000
call fcn.1009c5e0
and eax, 0xffff
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fmul qword [0x100ed9e0]
fsub qword [0x100cd6a0]
fld qword [esp + 0x70]
fxch st(1)
call sub.MSVCRT.dll__CIpow
fmul dword [0x100cd6b8]
push esi
fstp dword [esi + 0x6560]
call fcn.1009c5e0
push esi
call fcn.1009c5e0
and eax, 0xffff
add esp, 0x10
cmp eax, 0x7fff
je 0x100aae9d
fld qword [0x100cd408]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 0
fild qword [esp + 0x44]
fmul qword [0x100ed9d8]
call sub.MSVCRT.dll__CIpow
fstp dword [esi + 0x6568]
push esi
call fcn.1009c5e0
and eax, 0xffff
add esp, 4
cmp eax, 0xffff
je 0x100aaed4
fld qword [0x100cd408]
movsx edx, ax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul qword [0x100ed9d0]
call sub.MSVCRT.dll__CIpow
fstp dword [esi + 0x6564]
push esi
call fcn.1009c5e0
push esi
call fcn.1009c5e0
and eax, 0xffff
push esi
mov dword [esp + 0x48], eax
call fcn.1009c5e0
push esi
call fcn.1009c5e0
add esp, 0x10
and eax, 0xffff
mov dword [esi + 0x6574], eax
cmp dword [esp + 0x10], 8
jne 0x100aaf23
cmp dword [esp + 0x18], ebp
jne 0x100ab080
push esi
call fcn.1009c680
add esp, 4
mov dword [esi + 0x6574], eax
cmp dword [esp + 0x10], 9
jne 0x100aaf7c
mov edi, str.Canon
lea eax, [esi + 0x6455]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [edi]
jne 0x100aaf59
test cl, cl
je 0x100aaf55
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [edi + 1]
jne 0x100aaf59
add eax, 2
add edi, 2
test cl, cl
jne 0x100aaf35
xor eax, eax
jmp 0x100aaf5e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100ab080
mov edx, dword [esi + 4]
mov eax, dword [esi]
push 1
lea ecx, [esi + 0x6515]
push 0x40
push ecx
push edx
call dword [eax]
add esp, 0x10
cmp dword [esp + 0x10], 0xc
jne 0x100aafb2
cmp dword [esp + 0x1c], ebp
jne 0x100ab080
mov eax, dword [esp + 0x18]
push eax
push esi
call fcn.1009c700
mov ecx, dword [esp + 0x20]
fstp dword [esi + 0xe6bc]
push ecx
push esi
call fcn.1009c700
fstp dword [esi + 0xe6c4]
add esp, 0x10
cmp dword [esp + 0x10], 0x10
jne 0x100aafd2
cmp dword [esp + 0x18], ebp
jne 0x100ab080
push esi
call fcn.1009c680
add esp, 4
mov dword [esi + 0x6584], eax
cmp dword [esp + 0x10], 0x11
jne 0x100ab022
mov eax, dword [esi + 0x65e0]
test eax, eax
je 0x100ab080
push 5
lea edx, [esi + 0x6455]
push str.NIKON
push edx
call dword [sym.imp.MSVCRT.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x100ab022
mov edi, dword [esi]
push eax
push esi
call fcn.1009c680
add esp, 4
add eax, ebx
push eax
mov eax, dword [esi + 4]
push eax
call dword [edi + 8]
push ebx
push esi
call fcn.100ac6e0
add esp, 0x14
mov eax, dword [esp + 0x10]
cmp eax, 0x14
jne 0x100ab054
cmp dword [esp + 0x1c], 0xa00
jne 0x100ab080
cmp dword [esp + 0x18], 7
jne 0x100ab080
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x4e0
push edx
call dword [ecx + 8]
add esp, 0xc
jmp 0x100ab908
cmp eax, 0x15
jne 0x100ab080
cmp dword [esp + 0x18], 2
jne 0x100ab080
mov eax, dword [esi + 0x65e0]
test eax, eax
je 0x100ab080
mov edx, dword [esi + 4]
mov eax, dword [esi]
push 1
lea ecx, [esi + 0x6495]
push 0x40
push ecx
push edx
call dword [eax]
add esp, 0x10
lea eax, [esi + 0x6455]
push str.PENTAX
push eax
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
mov eax, dword [esp + 0x10]
je 0x100ab0c1
cmp eax, 0x1b
jne 0x100ab0af
mov dword [esp + 0x10], 0x1018
jmp 0x100ab8d0
cmp eax, 0x1c
jne 0x100ab0c1
mov dword [esp + 0x10], 0x1017
jmp 0x100ab89c
cmp eax, 0x1d
jne 0x100ab13d
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x1c]
mov edi, eax
add esp, 4
test edi, edi
je 0x100ab139
mov ebp, dword [sym.imp.MSVCRT.dll__isctype]
mov ebx, dword [esp + 0x38]
cmp edi, 0xffffffff
je 0x100ab139
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x100ab0fb
push 4
push edi
call ebp
add esp, 8
jmp 0x100ab109
mov ecx, dword [sym.imp.MSVCRT.dll__pctype]
mov edx, dword [ecx]
mov al, byte [edx + edi*2]
and eax, 4
test eax, eax
je 0x100ab112
lea edx, [edi - 0x30]
jmp 0x100ab11d
mov eax, edi
xor edx, edx
mov ecx, 0xa
div ecx
mov ecx, dword [esi]
lea eax, [ebx + ebx*4]
lea ebx, [edx + eax*2]
mov edx, dword [esi + 4]
push edx
mov dword [esp + 0x3c], ebx
call dword [ecx + 0x1c]
mov edi, eax
add esp, 4
test edi, edi
jne 0x100ab0e2
mov eax, dword [esp + 0x10]
cmp eax, 0x81
jne 0x100ab197
cmp dword [esp + 0x18], 4
jne 0x100ab20d
push esi
call fcn.1009c680
mov edx, dword [esi + 4]
mov ecx, dword [esi]
mov dword [esi + 0x658c], eax
add eax, 0x29
push 0
push eax
push edx
call dword [ecx + 8]
push esi
call fcn.1009c5e0
shl eax, 1
push esi
mov word [esi + 0x65f8], ax
call fcn.1009c5e0
mov word [esi + 0x65fa], ax
mov eax, dword [esp + 0x28]
add esp, 0x18
mov dword [esi + 0x657c], 0x61616161
cmp eax, 0x29
jne 0x100ab206
cmp dword [esp + 0x18], 1
jne 0x100aba6f
mov eax, dword [esp + 0x3c]
cmp eax, 0x12
jae 0x100ab1bc
movsx eax, byte [eax + str.012347800000005896]
sub eax, 0x30
jmp 0x100ab1be
xor eax, eax
mov edx, dword [esi + 4]
mov ecx, dword [esi]
shl eax, 5
add eax, 8
push 1
push eax
push edx
call dword [ecx + 8]
add esp, 0xc
xor ebx, ebx
xor edi, edi
push esi
call fcn.1009c680
mov dword [esp + 0x58], eax
mov eax, edi
xor eax, 2
mov dword [esp + 0x5c], ebx
fild qword [esp + 0x58]
shr eax, 1
add esp, 4
xor eax, edi
inc edi
fstp dword [esi + eax*4 + 0xe6bc]
cmp edi, 4
jb 0x100ab1d7
mov eax, dword [esp + 0x10]
cmp eax, 0x81
jne 0x100ab219
cmp dword [esp + 0x18], 7
je 0x100ab23e
jmp 0x100aba6f
cmp eax, 0x100
jne 0x100ab22c
cmp dword [esp + 0x18], 7
je 0x100ab23e
jmp 0x100aba6f
cmp eax, 0x280
jne 0x100ab25e
cmp dword [esp + 0x18], 1
jne 0x100aba6f
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x18]
mov dword [esi + 0x6590], eax
mov eax, dword [esp + 0x20]
mov dword [esi + 0x659c], eax
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, 0x88
jne 0x100ab296
cmp dword [esp + 0x18], 4
jne 0x100aba6f
push esi
call fcn.1009c680
add esp, 4
mov dword [esi + 0x6590], eax
test eax, eax
je 0x100ab292
mov ecx, dword [esp + 0x1bc]
add eax, ecx
mov dword [esi + 0x6590], eax
mov eax, dword [esp + 0x10]
cmp eax, 0x89
jne 0x100ab2bb
cmp dword [esp + 0x18], 4
jne 0x100aba6f
push esi
call fcn.1009c680
mov dword [esi + 0x659c], eax
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, 0x8c
je 0x100ab2c9
cmp eax, 0x96
jne 0x100ab2df
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x18]
mov dword [esi + 0x6594], eax
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, 0x97
jne 0x100ab3fb
mov ebp, dword [esp + 0x34]
mov edi, 4
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
call dword [ecx + 0x1c]
add ebp, 0xffffffd
add esp, 4
shl ebp, 4
add ebp, eax
dec edi
jne 0x100ab2f3
mov eax, ebp
mov dword [esp + 0x34], ebp
sub eax, 0x100
je 0x100ab374
sub eax, 2
je 0x100ab362
dec eax
jne 0x100ab3b6
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0x10
push ecx
call dword [eax + 8]
add esp, 0xc
lea edi, [esi + 0xe6bc]
mov ebx, 4
push esi
call fcn.1009c5e0
and eax, 0xffff
add esp, 4
mov dword [esp + 0x14], eax
add edi, 4
fild dword [esp + 0x14]
dec ebx
fstp dword [edi - 4]
jne 0x100ab341
jmp 0x100ab3b6
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 6
push eax
call dword [edx + 8]
jmp 0x100aba12
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x44
push edx
call dword [ecx + 8]
add esp, 0xc
xor edi, edi
push esi
call fcn.1009c5e0
and eax, 0xffff
mov ecx, edi
mov dword [esp + 0x18], eax
mov eax, edi
fild dword [esp + 0x18]
and eax, 1
add esp, 4
shl eax, 1
shr ecx, 1
or eax, ecx
inc edi
cmp edi, 4
fstp dword [esi + eax*4 + 0xe6bc]
jb 0x100ab386
mov edx, ebp
and dl, 0
cmp edx, 0x200
jne 0x100ab3f5
cmp ebp, 0x205
je 0x100ab3de
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0x118
push ecx
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 1
lea eax, [esp + 0x74]
push 0x144
push eax
push ecx
call dword [edx]
add esp, 0x10
mov eax, dword [esp + 0x10]
jmp 0x100ab3ff
mov ebp, dword [esp + 0x34]
cmp eax, 0xa4
jne 0x100ab45c
cmp dword [esp + 0x18], 3
jne 0x100aba6f
mov eax, dword [esp + 0x3c]
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 1
lea eax, [eax + eax*2]
shl eax, 4
push eax
push ecx
call dword [edx + 8]
add esp, 0xc
lea edi, [esi + 0xe6bc]
mov ebx, 3
push esi
call fcn.1009c5e0
and eax, 0xffff
add esp, 4
mov dword [esp + 0x14], eax
add edi, 4
fild dword [esp + 0x14]
dec ebx
fstp dword [edi - 4]
jne 0x100ab435
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x34]
cmp eax, 0xa7
jne 0x100ab56a
and ebp, 0xffffff00
cmp ebp, 0x200
jne 0x100aba6f
mov edx, dword [esp + 0x38]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
and edx, 0xff
push ecx
mov bl, byte [edx + 0x100eb624]
mov byte [esp + 0x2b], bl
call dword [eax + 0x1c]
mov edx, dword [esi]
mov edi, eax
mov eax, dword [esi + 4]
push eax
call dword [edx + 0x1c]
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push edx
xor edi, eax
call dword [ecx + 0x1c]
mov ecx, dword [esi + 4]
xor edi, eax
mov eax, dword [esi]
push ecx
call dword [eax + 0x1c]
xor edi, eax
mov al, bl
mov bl, 0x60
add esp, 0x10
mov dl, byte [edi + 0x100eb724]
xor ecx, ecx
imul bl
mov bl, byte [esp + 0x27]
add dl, al
add al, bl
xor byte [esp + ecx + 0x70], dl
inc ecx
cmp ecx, 0x144
jb 0x100ab4ce
mov ebp, dword [esp + 0x34]
xor edi, edi
mov edx, ebp
sub edx, 0x205
neg edx
sbb edx, edx
and edx, 0xfffffff8
add edx, 0xe
lea ebx, [esp + edx + 0x70]
push ebx
push esi
call fcn.1009c5b0
and eax, 0xffff
add esp, 8
mov dword [esp + 0x14], eax
mov eax, edi
fild dword [esp + 0x14]
shr eax, 1
xor eax, edi
inc edi
add ebx, 2
cmp edi, 4
fstp dword [esi + eax*4 + 0xe6bc]
jb 0x100ab4fb
cmp ebp, 0x209
jne 0x100ab566
xor edi, edi
lea ebx, [esp + 0x7a]
push ebx
push esi
call fcn.1009c5b0
mov ecx, edi
and eax, 0xffff
xor ecx, 2
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
shr ecx, 1
add esp, 8
xor ecx, edi
inc edi
add ebx, 2
fstp dword [esi + ecx*4 + 0xe6bc]
cmp edi, 4
jb 0x100ab536
mov eax, dword [esp + 0x10]
cmp eax, 0x200
jne 0x100ab5ef
cmp dword [esp + 0x1c], 3
jne 0x100ab598
push esi
call fcn.1009c680
push esi
call fcn.1009c680
mov dword [esi + 0x6574], eax
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, 0x200
jne 0x100ab5ef
cmp dword [esp + 0x1c], 4
jne 0x100aba6f
push esi
call fcn.1009c5e0
mov di, ax
push esi
and edi, 0xffff
call fcn.1009c5e0
and eax, 0xffff
push esi
add edi, eax
call fcn.1009c5e0
and eax, 0xffff
push esi
add edi, eax
call fcn.1009c5e0
and eax, 0xffff
add esp, 0x10
add eax, edi
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esi + 0x65c4], eax
mov eax, dword [esp + 0x10]
cmp eax, 0x201
jne 0x100ab606
cmp dword [esp + 0x1c], 4
je 0x100aba15
jmp 0x100aba6f
cmp eax, 0x401
jne 0x100ab648
cmp dword [esp + 0x1c], 4
jne 0x100aba6f
push esi
call fcn.1009c680
push esi
mov edi, eax
call fcn.1009c680
push esi
add edi, eax
call fcn.1009c680
push esi
add edi, eax
call fcn.1009c680
add edi, eax
mov eax, dword [esp + 0x20]
add esp, 0x10
shr edi, 2
mov dword [esi + 0x65c4], edi
cmp eax, 0xe01
jne 0x100ab6fb
movsx edx, word [esi + 0x6244]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0x16
push ecx
mov dword [esp + 0x24], edx
mov word [esi + 0x6244], 0x4949
call dword [eax + 8]
mov eax, dword [esp + 0x28]
add esp, 0xc
cmp eax, 0x2c
mov ebx, 0x16
jbe 0x100ab6eb
mov ebp, 0x76a43207
push esi
call fcn.1009c680
mov edx, dword [esi]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 4]
push 1
push 0xe
push eax
call dword [edx + 8]
push esi
call fcn.1009c680
mov edi, eax
mov eax, dword [esp + 0x24]
add esp, 0x14
sub edi, 4
cmp eax, ebp
jne 0x100ab6cd
push esi
call fcn.1009c5e0
add esp, 4
and eax, 0xffff
mov dword [esi + 0x6610], eax
jmp 0x100ab6dc
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push edi
push edx
call dword [ecx + 8]
add esp, 0xc
mov ecx, dword [esp + 0x1c]
lea ebx, [ebx + edi + 0x16]
lea eax, [ebx + 0x16]
cmp eax, ecx
jb 0x100ab68a
mov cx, word [esp + 0x18]
mov eax, dword [esp + 0x10]
mov word [esi + 0x6244], cx
cmp eax, 0xe80
jne 0x100ab781
cmp dword [esp + 0x1c], 0x100
jne 0x100aba6f
cmp dword [esp + 0x18], 7
jne 0x100aba6f
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x30
push eax
call dword [edx + 8]
push esi
call fcn.1009c5e0
and eax, 0xffff
push esi
mov ecx, eax
shl ecx, 7
sub ecx, eax
shl ecx, 2
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
fmul dword [0x100ed9cc]
fstp dword [esi + 0xe6bc]
call fcn.1009c5e0
and eax, 0xffff
add esp, 0x14
lea edx, [eax + eax*2]
shl edx, 6
sub edx, eax
mov eax, dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul dword [0x100ed9c8]
fstp dword [esi + 0xe6c4]
cmp eax, 0xf00
jne 0x100ab7e0
cmp dword [esp + 0x18], 7
jne 0x100aba6f
mov eax, dword [esp + 0x1c]
cmp eax, 0x266
jne 0x100ab7b6
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0xb0
push ecx
call dword [eax + 8]
add esp, 0xc
jmp 0x100ab908
cmp eax, 0x2de
je 0x100ab7c8
cmp eax, 0x5de
jne 0x100aba6f
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x94
push eax
call dword [edx + 8]
add esp, 0xc
jmp 0x100ab908
cmp eax, 0x1011
jne 0x100ab7f3
cmp dword [esp + 0x1c], 9
je 0x100ab7fa
jmp 0x100aba6f
cmp eax, 0x20400200
jne 0x100ab844
lea ebp, [esi + 0xe6dc]
mov dword [esp + 0x14], 3
mov edi, ebp
mov ebx, 3
push esi
call fcn.1009c5e0
movsx ecx, ax
mov dword [esp + 0x24], ecx
add esp, 4
fild dword [esp + 0x20]
add edi, 4
dec ebx
fmul dword [0x100ed9c4]
fstp dword [edi - 4]
jne 0x100ab80f
mov eax, dword [esp + 0x14]
add ebp, 0x10
dec eax
mov dword [esp + 0x14], eax
jne 0x100ab808
mov eax, dword [esp + 0x10]
cmp eax, 0x1012
je 0x100ab852
cmp eax, 0x20400600
jne 0x100ab88e
cmp dword [esp + 0x1c], 4
jne 0x100ab88e
mov dword [esi + 0x65c4], 0
mov edi, 4
push esi
call fcn.1009c5e0
mov ecx, dword [esi + 0x65c4]
and eax, 0xffff
shl eax, 2
add esp, 4
add ecx, eax
dec edi
mov dword [esi + 0x65c4], ecx
jne 0x100ab868
mov eax, dword [esp + 0x10]
cmp eax, 0x1017
je 0x100ab89c
cmp eax, 0x20400100
jne 0x100ab8c2
push esi
call fcn.1009c5e0
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x100ed9c4]
fstp dword [esi + 0xe6bc]
cmp eax, 0x1018
je 0x100ab8d0
cmp eax, 0x20400100
jne 0x100ab8f6
push esi
call fcn.1009c5e0
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x100ed9c4]
fstp dword [esi + 0xe6c4]
cmp eax, 0x2011
jne 0x100ab956
cmp dword [esp + 0x1c], 2
jne 0x100aba6f
push esi
mov word [esi + 0x6244], 0x4d4d
call fcn.1009c5e0
and eax, 0xffff
push esi
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fmul dword [0x100ed9c4]
fstp dword [esi + 0xe6bc]
call fcn.1009c5e0
add esp, 8
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x100ed9c4]
fstp dword [esi + 0xe6c4]
cmp eax, 0x2020
jne 0x100ab97e
mov edi, dword [esp + 0x1bc]
push 0x102
push 0x101
push edi
push esi
call fcn.100aa8a0
mov eax, dword [esp + 0x20]
add esp, 0x10
jmp 0x100ab985
mov edi, dword [esp + 0x1bc]
cmp eax, 0x2040
jne 0x100ab99b
push eax
push edi
push esi
call fcn.100aa940
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp eax, 0xb028
jne 0x100ab9cf
mov ebx, dword [esi]
push 0
push esi
call fcn.1009c680
mov edx, dword [esi + 4]
add esp, 4
push eax
push edx
call dword [ebx + 8]
push 0x89
push 0x88
push edi
push esi
call fcn.100aa8a0
mov eax, dword [esp + 0x2c]
add esp, 0x1c
cmp eax, 0x4001
jne 0x100aba6f
cmp dword [esp + 0x18], 3
jne 0x100aba6f
mov eax, dword [esp + 0x1c]
cmp eax, 0x246
jne 0x100ab9f7
mov eax, 0x32
jmp 0x100aba06
sub eax, 0x28d
neg eax
sbb eax, eax
and eax, 0x3a
add eax, 0x44
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push eax
push edx
call dword [ecx + 8]
add esp, 0xc
xor edi, edi
push esi
call fcn.1009c5e0
and eax, 0xffff
add esp, 4
mov dword [esp + 0x20], eax
mov eax, edi
fild dword [esp + 0x20]
shr eax, 1
xor eax, edi
inc edi
cmp edi, 4
fstp dword [esi + eax*4 + 0xe6bc]
jb 0x100aba17
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x16
push edx
call dword [ecx + 8]
add esp, 0xc
xor edi, edi
push esi
call fcn.1009c5e0
mov ecx, edi
add esp, 4
shr ecx, 1
xor ecx, edi
inc edi
cmp edi, 4
mov word [esi + ecx*2 + 0xe6b4], ax
jb 0x100aba52
mov eax, dword [esp + 0x5c]
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 0
push eax
push ecx
call dword [edx + 8]
mov eax, dword [esp + 0x4c]
add esp, 0xc
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x40], eax
jne 0x100aad75
jmp 0x100abb59
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
mov word [esi + 0x6244], 0x4d4d
call dword [eax + 0x18]
mov ecx, dword [esi + 0x658c]
add esp, 4
cmp eax, ecx
jge 0x100abb59
cmp eax, 0x4000
jae 0x100abb59
mov edi, ebp
mov ebp, ebx
mov ebx, dword [esp + 0x50]
push esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x50], ebp
mov dword [esp + 0x4c], ebx
call fcn.1009c5e0
add esp, 4
and eax, 0xffff
cmp ebx, 0x100
mov dword [esp + 0x50], eax
jne 0x100abb3f
cmp eax, ebx
jne 0x100abb3f
cmp edi, ebx
jbe 0x100abb3f
cmp edi, 0x280
jae 0x100abb3f
cmp ebp, ebx
jbe 0x100abb3f
cmp ebp, 0x280
jae 0x100abb3f
lea eax, [esp + 0x44]
lea ecx, [esi + 0xe6bc]
mov edx, 4
mov edi, dword [eax]
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], edi
add eax, 4
fild qword [esp + 0x54]
add ecx, 4
dec edx
fstp dword [ecx - 4]
jne 0x100abb21
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x18]
mov ecx, dword [esi + 0x658c]
add esp, 4
cmp eax, ecx
jl 0x100ababd
mov cx, word [esp + 0x64]
mov word [esi + 0x6244], cx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a4
ret