Function at 0x100b9aa0
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]
push 3
lea ecx, [esp + 0x3c]
push 0x10174fd0
push ecx
call fcn.1002f3f0
add esp, 0x1c
test eax, eax
je 0x100baccb
push 3
lea edx, [esp + 0x2c]
push 0x10174fcc
push edx
call fcn.1002f3f0
add esp, 0xc
test eax, eax
je 0x100baccb
push 4
lea eax, [esp + 0x2c]
push str.IIII
push eax
call fcn.1002f3f0
add esp, 0xc
test eax, eax
je 0x100baccb
push 4
lea ecx, [esp + 0x2c]
push str.MMMM
push ecx
call fcn.1002f3f0
add esp, 0xc
test eax, eax
je 0x100baccb
push 2
lea edx, [esp + 0x2c]
push 0x10174fb8
push edx
call fcn.1002f3f0
add esp, 0xc
test eax, eax
je 0x100bac00
push 3
lea eax, [esp + 0x2c]
push 0x10174fb4
push eax
call fcn.1002f3f0
add esp, 0xc
test eax, eax
je 0x100bac00
mov edi, str.Nikon
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9bbf
test cl, cl
je 0x100b9bbb
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9bbf
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9b97
xor eax, eax
jmp 0x100b9bc4
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100b9c15
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x18]
push esi
mov dword [esp + 0x1c4], eax
call fcn.100ab840
push esi
mov word [esi + 0x6244], ax
call fcn.100ab840
add esp, 0xc
cmp ax, 0x2a
jne 0x100bacbf
push esi
call fcn.100ab8e0
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 0x100b9eab
mov edi, str.OLYMPUS
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9c46
test cl, cl
je 0x100b9c42
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9c46
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9c1e
xor eax, eax
jmp 0x100b9c4b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100b9c8a
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.100ab840
push esi
mov word [esi + 0x6244], ax
call fcn.100ab840
add esp, 0x18
jmp 0x100b9eab
push 8
lea ecx, [esp + 0x2c]
push str.FUJIFILM
push ecx
call fcn.1002f3f0
add esp, 0xc
test eax, eax
je 0x100b9e92
push 4
lea edx, [esp + 0x2c]
push str.SONY
push edx
call fcn.1002f3f0
add esp, 0xc
test eax, eax
je 0x100b9e92
mov edi, str.Panasonic
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9cf3
test cl, cl
je 0x100b9cef
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9cf3
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9ccb
xor eax, eax
jmp 0x100b9cf8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100b9e92
mov edi, str.OLYMP
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9d31
test cl, cl
je 0x100b9d2d
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9d31
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9d09
xor eax, eax
jmp 0x100b9d36
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100b9e83
mov edi, str.LEICA
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9d6f
test cl, cl
je 0x100b9d6b
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9d6f
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9d47
xor eax, eax
jmp 0x100b9d74
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100b9e83
mov edi, str.Ricoh
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9dad
test cl, cl
je 0x100b9da9
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9dad
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9d85
xor eax, eax
jmp 0x100b9db2
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100b9e83
mov edi, str.EPSON
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9deb
test cl, cl
je 0x100b9de7
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9deb
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9dc3
xor eax, eax
jmp 0x100b9df0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100b9e83
mov edi, 0x10174f70
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9e29
test cl, cl
je 0x100b9e25
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9e29
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9e01
xor eax, eax
jmp 0x100b9e2e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100b9e74
mov edi, 0x10174f6c
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x100b9e63
test cl, cl
je 0x100b9e5f
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x100b9e63
add eax, 2
add edi, 2
test cl, cl
jne 0x100b9e3b
xor eax, eax
jmp 0x100b9e68
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100b9e74
mov eax, dword [esi]
push 1
push 0xfffffffffffffff6
jmp 0x100b9ea1
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0xfffffffffffffffc
push eax
call dword [edx + 8]
jmp 0x100b9ea8
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0xfffffffffffffffe
push edx
call dword [ecx + 8]
jmp 0x100b9ea8
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.100ab840
and eax, 0xffff
add esp, 4
cmp eax, 0x3e8
ja 0x100baccb
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x40], eax
je 0x100bacbf
mov eax, dword [esp + 0x1c0]
shl eax, 0x10
mov dword [esp + 0x60], eax
mov ebp, 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 ebp
push esi
call fcn.100b9970
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 0x100b9f53
lea ecx, [esi + 0x6455]
push str.NIKON
push ecx
call fcn.1002ff40
add esp, 8
test eax, eax
je 0x100b9f53
push esi
call fcn.100ab840
push esi
call fcn.100ab840
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 ebx, 4
cmp eax, ebx
jne 0x100ba06e
mov eax, dword [esp + 0x1c]
cmp eax, 0x1a
jbe 0x100ba1ea
cmp eax, 0x23
jae 0x100ba1ea
push esi
call fcn.100ab8e0
push esi
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0x40000000
call fcn.100ab840
and eax, 0xffff
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fmul qword [0x1013e6f0]
fsub qword [0x10137208]
fld qword [esp + 0x70]
fxch st(1)
call fcn.10098f90
fmul dword [0x10137220]
push esi
fstp dword [esi + 0x6560]
call fcn.100ab840
push esi
call fcn.100ab840
and eax, 0xffff
add esp, 0x10
cmp eax, 0x7fff
je 0x100ba008
fld qword [0x10136ef8]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 0
fild qword [esp + 0x44]
fmul qword [0x1013e6e8]
call fcn.10098f90
fstp dword [esi + 0x6568]
push esi
call fcn.100ab840
and eax, 0xffff
add esp, 4
cmp eax, 0xffff
je 0x100ba03f
fld qword [0x10136ef8]
movsx edx, ax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul qword [0x1013e6e0]
call fcn.10098f90
fstp dword [esi + 0x6564]
push esi
call fcn.100ab840
push esi
call fcn.100ab840
and eax, 0xffff
push esi
mov dword [esp + 0x48], eax
call fcn.100ab840
push esi
call fcn.100ab840
add esp, 0x10
and eax, 0xffff
mov dword [esi + 0x6574], eax
cmp dword [esp + 0x10], 8
jne 0x100ba08e
cmp dword [esp + 0x18], ebx
jne 0x100ba1ea
push esi
call fcn.100ab8e0
add esp, 4
mov dword [esi + 0x6574], eax
cmp dword [esp + 0x10], 9
jne 0x100ba0e7
mov edi, str.Canon
lea eax, [esi + 0x6455]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [edi]
jne 0x100ba0c4
test cl, cl
je 0x100ba0c0
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [edi + 1]
jne 0x100ba0c4
add eax, 2
add edi, 2
test cl, cl
jne 0x100ba0a0
xor eax, eax
jmp 0x100ba0c9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100ba1ea
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 0x100ba11d
cmp dword [esp + 0x1c], ebx
jne 0x100ba1ea
mov eax, dword [esp + 0x18]
push eax
push esi
call fcn.100ab960
mov ecx, dword [esp + 0x20]
fstp dword [esi + 0xe6bc]
push ecx
push esi
call fcn.100ab960
fstp dword [esi + 0xe6c4]
add esp, 0x10
cmp dword [esp + 0x10], 0x10
jne 0x100ba13d
cmp dword [esp + 0x18], ebx
jne 0x100ba1ea
push esi
call fcn.100ab8e0
add esp, 4
mov dword [esi + 0x6584], eax
cmp dword [esp + 0x10], 0x11
jne 0x100ba18c
mov eax, dword [esi + 0x65e0]
test eax, eax
je 0x100ba1ea
push 5
lea edx, [esi + 0x6455]
push str.NIKON
push edx
call fcn.1002f3f0
add esp, 0xc
test eax, eax
jne 0x100ba18c
mov edi, dword [esi]
push eax
push esi
call fcn.100ab8e0
add esp, 4
add eax, ebp
push eax
mov eax, dword [esi + 4]
push eax
call dword [edi + 8]
push ebp
push esi
call fcn.100bb840
add esp, 0x14
mov eax, dword [esp + 0x10]
cmp eax, 0x14
jne 0x100ba1be
cmp dword [esp + 0x1c], 0xa00
jne 0x100ba1ea
cmp dword [esp + 0x18], 7
jne 0x100ba1ea
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x4e0
push edx
call dword [ecx + 8]
add esp, 0xc
jmp 0x100baa6e
cmp eax, 0x15
jne 0x100ba1ea
cmp dword [esp + 0x18], 2
jne 0x100ba1ea
mov eax, dword [esi + 0x65e0]
test eax, eax
je 0x100ba1ea
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 fcn.1002ff40
add esp, 8
test eax, eax
mov eax, dword [esp + 0x10]
je 0x100ba22a
cmp eax, 0x1b
jne 0x100ba218
mov dword [esp + 0x10], 0x1018
jmp 0x100baa36
cmp eax, 0x1c
jne 0x100ba22a
mov dword [esp + 0x10], 0x1017
jmp 0x100baa02
cmp eax, 0x1d
jne 0x100ba2a3
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 0x100ba29f
mov ebx, dword [esp + 0x38]
mov ebp, 1
cmp edi, 0xffffffff
je 0x100ba29f
cmp dword [0x1016ebd0], ebp
jle 0x100ba264
push 4
push edi
call fcn.1003788c
add esp, 8
jmp 0x100ba26f
mov eax, dword [str.________________________________H]
mov al, byte [eax + edi*2]
and eax, 4
test eax, eax
je 0x100ba278
lea edx, [edi - 0x30]
jmp 0x100ba283
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 0x100ba24a
mov eax, dword [esp + 0x10]
cmp eax, 0x81
jne 0x100ba2fd
cmp dword [esp + 0x18], 4
jne 0x100ba373
push esi
call fcn.100ab8e0
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.100ab840
shl eax, 1
push esi
mov word [esi + 0x65f8], ax
call fcn.100ab840
mov word [esi + 0x65fa], ax
mov eax, dword [esp + 0x28]
add esp, 0x18
mov dword [esi + 0x657c], 0x61616161
cmp eax, 0x29
jne 0x100ba36c
cmp dword [esp + 0x18], 1
jne 0x100babd5
mov eax, dword [esp + 0x3c]
cmp eax, 0x12
jae 0x100ba322
movsx eax, byte [eax + str.012347800000005896]
sub eax, 0x30
jmp 0x100ba324
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.100ab8e0
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 0x100ba33d
mov eax, dword [esp + 0x10]
cmp eax, 0x81
jne 0x100ba37f
cmp dword [esp + 0x18], 7
je 0x100ba3a4
jmp 0x100babd5
cmp eax, 0x100
jne 0x100ba392
cmp dword [esp + 0x18], 7
je 0x100ba3a4
jmp 0x100babd5
cmp eax, 0x280
jne 0x100ba3c4
cmp dword [esp + 0x18], 1
jne 0x100babd5
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 0x100ba3fc
cmp dword [esp + 0x18], 4
jne 0x100babd5
push esi
call fcn.100ab8e0
add esp, 4
mov dword [esi + 0x6590], eax
test eax, eax
je 0x100ba3f8
mov ecx, dword [esp + 0x1bc]
add eax, ecx
mov dword [esi + 0x6590], eax
mov eax, dword [esp + 0x10]
cmp eax, 0x89
jne 0x100ba421
cmp dword [esp + 0x18], 4
jne 0x100babd5
push esi
call fcn.100ab8e0
mov dword [esi + 0x659c], eax
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, 0x8c
je 0x100ba42f
cmp eax, 0x96
jne 0x100ba445
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 0x100ba561
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 0x100ba459
mov eax, ebp
mov dword [esp + 0x34], ebp
sub eax, 0x100
je 0x100ba4da
sub eax, 2
je 0x100ba4c8
dec eax
jne 0x100ba51c
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.100ab840
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 0x100ba4a7
jmp 0x100ba51c
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 6
push eax
call dword [edx + 8]
jmp 0x100bab78
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.100ab840
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 0x100ba4ec
mov edx, ebp
and dl, 0
cmp edx, 0x200
jne 0x100ba55b
cmp ebp, 0x205
je 0x100ba544
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 0x100ba565
mov ebp, dword [esp + 0x34]
cmp eax, 0xa4
jne 0x100ba5c2
cmp dword [esp + 0x18], 3
jne 0x100babd5
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.100ab840
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 0x100ba59b
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x34]
cmp eax, 0xa7
jne 0x100ba6d0
and ebp, 0xffffff00
cmp ebp, 0x200
jne 0x100babd5
mov edx, dword [esp + 0x38]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
and edx, 0xff
push ecx
mov bl, byte [edx + 0x1013c334]
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 + 0x1013c434]
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 0x100ba634
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.100ab810
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 0x100ba661
cmp ebp, 0x209
jne 0x100ba6cc
xor edi, edi
lea ebx, [esp + 0x7a]
push ebx
push esi
call fcn.100ab810
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 0x100ba69c
mov eax, dword [esp + 0x10]
cmp eax, 0x200
jne 0x100ba755
cmp dword [esp + 0x1c], 3
jne 0x100ba6fe
push esi
call fcn.100ab8e0
push esi
call fcn.100ab8e0
mov dword [esi + 0x6574], eax
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, 0x200
jne 0x100ba755
cmp dword [esp + 0x1c], 4
jne 0x100babd5
push esi
call fcn.100ab840
mov di, ax
push esi
and edi, 0xffff
call fcn.100ab840
and eax, 0xffff
push esi
add edi, eax
call fcn.100ab840
and eax, 0xffff
push esi
add edi, eax
call fcn.100ab840
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 0x100ba76c
cmp dword [esp + 0x1c], 4
je 0x100bab7b
jmp 0x100babd5
cmp eax, 0x401
jne 0x100ba7ae
cmp dword [esp + 0x1c], 4
jne 0x100babd5
push esi
call fcn.100ab8e0
push esi
mov edi, eax
call fcn.100ab8e0
push esi
add edi, eax
call fcn.100ab8e0
push esi
add edi, eax
call fcn.100ab8e0
add edi, eax
mov eax, dword [esp + 0x20]
add esp, 0x10
shr edi, 2
mov dword [esi + 0x65c4], edi
cmp eax, 0xe01
jne 0x100ba861
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 0x100ba851
mov ebp, 0x76a43207
push esi
call fcn.100ab8e0
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.100ab8e0
mov edi, eax
mov eax, dword [esp + 0x24]
add esp, 0x14
sub edi, 4
cmp eax, ebp
jne 0x100ba833
push esi
call fcn.100ab840
add esp, 4
and eax, 0xffff
mov dword [esi + 0x6610], eax
jmp 0x100ba842
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 0x100ba7f0
mov cx, word [esp + 0x18]
mov eax, dword [esp + 0x10]
mov word [esi + 0x6244], cx
cmp eax, 0xe80
jne 0x100ba8e7
cmp dword [esp + 0x1c], 0x100
jne 0x100babd5
cmp dword [esp + 0x18], 7
jne 0x100babd5
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x30
push eax
call dword [edx + 8]
push esi
call fcn.100ab840
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 [0x1013e6dc]
fstp dword [esi + 0xe6bc]
call fcn.100ab840
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 [0x1013e6d8]
fstp dword [esi + 0xe6c4]
cmp eax, 0xf00
jne 0x100ba946
cmp dword [esp + 0x18], 7
jne 0x100babd5
mov eax, dword [esp + 0x1c]
cmp eax, 0x266
jne 0x100ba91c
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0xb0
push ecx
call dword [eax + 8]
add esp, 0xc
jmp 0x100baa6e
cmp eax, 0x2de
je 0x100ba92e
cmp eax, 0x5de
jne 0x100babd5
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x94
push eax
call dword [edx + 8]
add esp, 0xc
jmp 0x100baa6e
cmp eax, 0x1011
jne 0x100ba959
cmp dword [esp + 0x1c], 9
je 0x100ba960
jmp 0x100babd5
cmp eax, 0x20400200
jne 0x100ba9aa
lea ebp, [esi + 0xe6dc]
mov dword [esp + 0x14], 3
mov edi, ebp
mov ebx, 3
push esi
call fcn.100ab840
movsx ecx, ax
mov dword [esp + 0x24], ecx
add esp, 4
fild dword [esp + 0x20]
add edi, 4
dec ebx
fmul dword [0x1013e6d4]
fstp dword [edi - 4]
jne 0x100ba975
mov eax, dword [esp + 0x14]
add ebp, 0x10
dec eax
mov dword [esp + 0x14], eax
jne 0x100ba96e
mov eax, dword [esp + 0x10]
cmp eax, 0x1012
je 0x100ba9b8
cmp eax, 0x20400600
jne 0x100ba9f4
cmp dword [esp + 0x1c], 4
jne 0x100ba9f4
mov dword [esi + 0x65c4], 0
mov edi, 4
push esi
call fcn.100ab840
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 0x100ba9ce
mov eax, dword [esp + 0x10]
cmp eax, 0x1017
je 0x100baa02
cmp eax, 0x20400100
jne 0x100baa28
push esi
call fcn.100ab840
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x1013e6d4]
fstp dword [esi + 0xe6bc]
cmp eax, 0x1018
je 0x100baa36
cmp eax, 0x20400100
jne 0x100baa5c
push esi
call fcn.100ab840
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x1013e6d4]
fstp dword [esi + 0xe6c4]
cmp eax, 0x2011
jne 0x100baabc
cmp dword [esp + 0x1c], 2
jne 0x100babd5
push esi
mov word [esi + 0x6244], 0x4d4d
call fcn.100ab840
and eax, 0xffff
push esi
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fmul dword [0x1013e6d4]
fstp dword [esi + 0xe6bc]
call fcn.100ab840
add esp, 8
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x1013e6d4]
fstp dword [esi + 0xe6c4]
cmp eax, 0x2020
jne 0x100baae4
mov edi, dword [esp + 0x1bc]
push 0x102
push 0x101
push edi
push esi
call fcn.100b9a00
mov eax, dword [esp + 0x20]
add esp, 0x10
jmp 0x100baaeb
mov edi, dword [esp + 0x1bc]
cmp eax, 0x2040
jne 0x100bab01
push eax
push edi
push esi
call fcn.100b9aa0
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp eax, 0xb028
jne 0x100bab35
mov ebx, dword [esi]
push 0
push esi
call fcn.100ab8e0
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.100b9a00
mov eax, dword [esp + 0x2c]
add esp, 0x1c
cmp eax, 0x4001
jne 0x100babd5
cmp dword [esp + 0x18], 3
jne 0x100babd5
mov eax, dword [esp + 0x1c]
cmp eax, 0x246
jne 0x100bab5d
mov eax, 0x32
jmp 0x100bab6c
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.100ab840
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 0x100bab7d
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.100ab840
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 0x100babb8
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 0x100b9ee1
jmp 0x100bacbf
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 0x100bacbf
cmp eax, 0x4000
jae 0x100bacbf
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.100ab840
add esp, 4
and eax, 0xffff
cmp ebx, 0x100
mov dword [esp + 0x50], eax
jne 0x100baca5
cmp eax, ebx
jne 0x100baca5
cmp edi, ebx
jbe 0x100baca5
cmp edi, 0x280
jae 0x100baca5
cmp ebp, ebx
jbe 0x100baca5
cmp ebp, 0x280
jae 0x100baca5
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 0x100bac87
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 0x100bac23
mov cx, word [esp + 0x64]
mov word [esi + 0x6244], cx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a4
ret