Function at 0x4b4c10
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 0x590058
push ecx
call edi
add esp, 0x1c
test eax, eax
je 0x4b5e35
push 3
lea edx, [esp + 0x2c]
push 0x590054
push edx
call edi
add esp, 0xc
test eax, eax
je 0x4b5e35
push 4
lea eax, [esp + 0x2c]
push str.IIII
push eax
call edi
add esp, 0xc
test eax, eax
je 0x4b5e35
push 4
lea ecx, [esp + 0x2c]
push str.MMMM
push ecx
call edi
add esp, 0xc
test eax, eax
je 0x4b5e35
push 2
lea edx, [esp + 0x2c]
push 0x590040
push edx
call edi
add esp, 0xc
test eax, eax
je 0x4b5d6a
push 3
lea eax, [esp + 0x2c]
push 0x59003c
push eax
call edi
add esp, 0xc
test eax, eax
je 0x4b5d6a
mov edi, str.Nikon
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4d23
test cl, cl
je 0x4b4d1f
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4d23
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4cfb
xor eax, eax
jmp 0x4b4d28
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4b4d79
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x18]
push esi
mov dword [esp + 0x1c4], eax
call fcn.004a68b0
push esi
mov word [esi + 0x6244], ax
call fcn.004a68b0
add esp, 0xc
cmp ax, 0x2a
jne 0x4b5e29
push esi
call fcn.004a6950
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 0x4b500f
mov edi, str.OLYMPUS
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4daa
test cl, cl
je 0x4b4da6
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4daa
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4d82
xor eax, eax
jmp 0x4b4daf
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4b4dee
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.004a68b0
push esi
mov word [esi + 0x6244], ax
call fcn.004a68b0
add esp, 0x18
jmp 0x4b500f
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 0x4b4ff6
push 4
lea edx, [esp + 0x2c]
push str.SONY
push edx
call edi
add esp, 0xc
test eax, eax
je 0x4b4ff6
mov edi, str.Panasonic
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4e57
test cl, cl
je 0x4b4e53
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4e57
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4e2f
xor eax, eax
jmp 0x4b4e5c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4b4ff6
mov edi, str.OLYMP
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4e95
test cl, cl
je 0x4b4e91
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4e95
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4e6d
xor eax, eax
jmp 0x4b4e9a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4b4fe7
mov edi, str.LEICA
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4ed3
test cl, cl
je 0x4b4ecf
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4ed3
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4eab
xor eax, eax
jmp 0x4b4ed8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4b4fe7
mov edi, str.Ricoh
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4f11
test cl, cl
je 0x4b4f0d
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4f11
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4ee9
xor eax, eax
jmp 0x4b4f16
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4b4fe7
mov edi, str.EPSON
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4f4f
test cl, cl
je 0x4b4f4b
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4f4f
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4f27
xor eax, eax
jmp 0x4b4f54
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4b4fe7
mov edi, 0x58fff8
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4f8d
test cl, cl
je 0x4b4f89
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4f8d
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4f65
xor eax, eax
jmp 0x4b4f92
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4b4fd8
mov edi, 0x58fff4
lea eax, [esp + 0x28]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4b4fc7
test cl, cl
je 0x4b4fc3
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4b4fc7
add eax, 2
add edi, 2
test cl, cl
jne 0x4b4f9f
xor eax, eax
jmp 0x4b4fcc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4b4fd8
mov eax, dword [esi]
push 1
push 0xfffffffffffffff6
jmp 0x4b5005
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0xfffffffffffffffc
push eax
call dword [edx + 8]
jmp 0x4b500c
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0xfffffffffffffffe
push edx
call dword [ecx + 8]
jmp 0x4b500c
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.004a68b0
and eax, 0xffff
add esp, 4
cmp eax, 0x3e8
ja 0x4b5e35
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x40], eax
je 0x4b5e29
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.004b4ae0
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 0x4b50b8
lea ecx, [esi + 0x6455]
push str.NIKON
push ecx
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
je 0x4b50b8
push esi
call fcn.004a68b0
push esi
call fcn.004a68b0
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 0x4b51d3
mov eax, dword [esp + 0x1c]
cmp eax, 0x1a
jbe 0x4b5350
cmp eax, 0x23
jae 0x4b5350
push esi
call fcn.004a6950
push esi
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0x40000000
call fcn.004a68b0
and eax, 0xffff
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fmul qword [0x574c40]
fsub qword [0x556970]
fld qword [esp + 0x70]
fxch st(1)
call sub.MSVCRT.dll__CIpow
fmul dword [0x556988]
push esi
fstp dword [esi + 0x6560]
call fcn.004a68b0
push esi
call fcn.004a68b0
and eax, 0xffff
add esp, 0x10
cmp eax, 0x7fff
je 0x4b516d
fld qword [0x556650]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 0
fild qword [esp + 0x44]
fmul qword [0x574c38]
call sub.MSVCRT.dll__CIpow
fstp dword [esi + 0x6568]
push esi
call fcn.004a68b0
and eax, 0xffff
add esp, 4
cmp eax, 0xffff
je 0x4b51a4
fld qword [0x556650]
movsx edx, ax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul qword [0x574c30]
call sub.MSVCRT.dll__CIpow
fstp dword [esi + 0x6564]
push esi
call fcn.004a68b0
push esi
call fcn.004a68b0
and eax, 0xffff
push esi
mov dword [esp + 0x48], eax
call fcn.004a68b0
push esi
call fcn.004a68b0
add esp, 0x10
and eax, 0xffff
mov dword [esi + 0x6574], eax
cmp dword [esp + 0x10], 8
jne 0x4b51f3
cmp dword [esp + 0x18], ebp
jne 0x4b5350
push esi
call fcn.004a6950
add esp, 4
mov dword [esi + 0x6574], eax
cmp dword [esp + 0x10], 9
jne 0x4b524c
mov edi, str.Canon
lea eax, [esi + 0x6455]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [edi]
jne 0x4b5229
test cl, cl
je 0x4b5225
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [edi + 1]
jne 0x4b5229
add eax, 2
add edi, 2
test cl, cl
jne 0x4b5205
xor eax, eax
jmp 0x4b522e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4b5350
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 0x4b5282
cmp dword [esp + 0x1c], ebp
jne 0x4b5350
mov eax, dword [esp + 0x18]
push eax
push esi
call fcn.004a69d0
mov ecx, dword [esp + 0x20]
fstp dword [esi + 0xe6bc]
push ecx
push esi
call fcn.004a69d0
fstp dword [esi + 0xe6c4]
add esp, 0x10
cmp dword [esp + 0x10], 0x10
jne 0x4b52a2
cmp dword [esp + 0x18], ebp
jne 0x4b5350
push esi
call fcn.004a6950
add esp, 4
mov dword [esi + 0x6584], eax
cmp dword [esp + 0x10], 0x11
jne 0x4b52f2
mov eax, dword [esi + 0x65e0]
test eax, eax
je 0x4b5350
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 0x4b52f2
mov edi, dword [esi]
push eax
push esi
call fcn.004a6950
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.004b69b0
add esp, 0x14
mov eax, dword [esp + 0x10]
cmp eax, 0x14
jne 0x4b5324
cmp dword [esp + 0x1c], 0xa00
jne 0x4b5350
cmp dword [esp + 0x18], 7
jne 0x4b5350
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 0x4e0
push edx
call dword [ecx + 8]
add esp, 0xc
jmp 0x4b5bd8
cmp eax, 0x15
jne 0x4b5350
cmp dword [esp + 0x18], 2
jne 0x4b5350
mov eax, dword [esi + 0x65e0]
test eax, eax
je 0x4b5350
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 0x4b5391
cmp eax, 0x1b
jne 0x4b537f
mov dword [esp + 0x10], 0x1018
jmp 0x4b5ba0
cmp eax, 0x1c
jne 0x4b5391
mov dword [esp + 0x10], 0x1017
jmp 0x4b5b6c
cmp eax, 0x1d
jne 0x4b540d
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 0x4b5409
mov ebp, dword [sym.imp.MSVCRT.dll__isctype]
mov ebx, dword [esp + 0x38]
cmp edi, 0xffffffff
je 0x4b5409
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x4b53cb
push 4
push edi
call ebp
add esp, 8
jmp 0x4b53d9
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 0x4b53e2
lea edx, [edi - 0x30]
jmp 0x4b53ed
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 0x4b53b2
mov eax, dword [esp + 0x10]
cmp eax, 0x81
jne 0x4b5467
cmp dword [esp + 0x18], 4
jne 0x4b54dd
push esi
call fcn.004a6950
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.004a68b0
shl eax, 1
push esi
mov word [esi + 0x65f8], ax
call fcn.004a68b0
mov word [esi + 0x65fa], ax
mov eax, dword [esp + 0x28]
add esp, 0x18
mov dword [esi + 0x657c], 0x61616161
cmp eax, 0x29
jne 0x4b54d6
cmp dword [esp + 0x18], 1
jne 0x4b5d3f
mov eax, dword [esp + 0x3c]
cmp eax, 0x12
jae 0x4b548c
movsx eax, byte [eax + str.012347800000005896]
sub eax, 0x30
jmp 0x4b548e
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.004a6950
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 0x4b54a7
mov eax, dword [esp + 0x10]
cmp eax, 0x81
jne 0x4b54e9
cmp dword [esp + 0x18], 7
je 0x4b550e
jmp 0x4b5d3f
cmp eax, 0x100
jne 0x4b54fc
cmp dword [esp + 0x18], 7
je 0x4b550e
jmp 0x4b5d3f
cmp eax, 0x280
jne 0x4b552e
cmp dword [esp + 0x18], 1
jne 0x4b5d3f
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 0x4b5566
cmp dword [esp + 0x18], 4
jne 0x4b5d3f
push esi
call fcn.004a6950
add esp, 4
mov dword [esi + 0x6590], eax
test eax, eax
je 0x4b5562
mov ecx, dword [esp + 0x1bc]
add eax, ecx
mov dword [esi + 0x6590], eax
mov eax, dword [esp + 0x10]
cmp eax, 0x89
jne 0x4b558b
cmp dword [esp + 0x18], 4
jne 0x4b5d3f
push esi
call fcn.004a6950
mov dword [esi + 0x659c], eax
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, 0x8c
je 0x4b5599
cmp eax, 0x96
jne 0x4b55af
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 0x4b56cb
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 0x4b55c3
mov eax, ebp
mov dword [esp + 0x34], ebp
sub eax, 0x100
je 0x4b5644
sub eax, 2
je 0x4b5632
dec eax
jne 0x4b5686
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.004a68b0
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 0x4b5611
jmp 0x4b5686
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 6
push eax
call dword [edx + 8]
jmp 0x4b5ce2
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.004a68b0
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 0x4b5656
mov edx, ebp
and dl, 0
cmp edx, 0x200
jne 0x4b56c5
cmp ebp, 0x205
je 0x4b56ae
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 0x4b56cf
mov ebp, dword [esp + 0x34]
cmp eax, 0xa4
jne 0x4b572c
cmp dword [esp + 0x18], 3
jne 0x4b5d3f
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.004a68b0
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 0x4b5705
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x34]
cmp eax, 0xa7
jne 0x4b583a
and ebp, 0xffffff00
cmp ebp, 0x200
jne 0x4b5d3f
mov edx, dword [esp + 0x38]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
and edx, 0xff
push ecx
mov bl, byte [edx + 0x572884]
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 + 0x572984]
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 0x4b579e
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.004a6880
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 0x4b57cb
cmp ebp, 0x209
jne 0x4b5836
xor edi, edi
lea ebx, [esp + 0x7a]
push ebx
push esi
call fcn.004a6880
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 0x4b5806
mov eax, dword [esp + 0x10]
cmp eax, 0x200
jne 0x4b58bf
cmp dword [esp + 0x1c], 3
jne 0x4b5868
push esi
call fcn.004a6950
push esi
call fcn.004a6950
mov dword [esi + 0x6574], eax
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, 0x200
jne 0x4b58bf
cmp dword [esp + 0x1c], 4
jne 0x4b5d3f
push esi
call fcn.004a68b0
mov di, ax
push esi
and edi, 0xffff
call fcn.004a68b0
and eax, 0xffff
push esi
add edi, eax
call fcn.004a68b0
and eax, 0xffff
push esi
add edi, eax
call fcn.004a68b0
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 0x4b58d6
cmp dword [esp + 0x1c], 4
je 0x4b5ce5
jmp 0x4b5d3f
cmp eax, 0x401
jne 0x4b5918
cmp dword [esp + 0x1c], 4
jne 0x4b5d3f
push esi
call fcn.004a6950
push esi
mov edi, eax
call fcn.004a6950
push esi
add edi, eax
call fcn.004a6950
push esi
add edi, eax
call fcn.004a6950
add edi, eax
mov eax, dword [esp + 0x20]
add esp, 0x10
shr edi, 2
mov dword [esi + 0x65c4], edi
cmp eax, 0xe01
jne 0x4b59cb
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 0x4b59bb
mov ebp, 0x76a43207
push esi
call fcn.004a6950
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.004a6950
mov edi, eax
mov eax, dword [esp + 0x24]
add esp, 0x14
sub edi, 4
cmp eax, ebp
jne 0x4b599d
push esi
call fcn.004a68b0
add esp, 4
and eax, 0xffff
mov dword [esi + 0x6610], eax
jmp 0x4b59ac
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 0x4b595a
mov cx, word [esp + 0x18]
mov eax, dword [esp + 0x10]
mov word [esi + 0x6244], cx
cmp eax, 0xe80
jne 0x4b5a51
cmp dword [esp + 0x1c], 0x100
jne 0x4b5d3f
cmp dword [esp + 0x18], 7
jne 0x4b5d3f
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x30
push eax
call dword [edx + 8]
push esi
call fcn.004a68b0
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 [0x574c2c]
fstp dword [esi + 0xe6bc]
call fcn.004a68b0
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 [0x574c28]
fstp dword [esi + 0xe6c4]
cmp eax, 0xf00
jne 0x4b5ab0
cmp dword [esp + 0x18], 7
jne 0x4b5d3f
mov eax, dword [esp + 0x1c]
cmp eax, 0x266
jne 0x4b5a86
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0xb0
push ecx
call dword [eax + 8]
add esp, 0xc
jmp 0x4b5bd8
cmp eax, 0x2de
je 0x4b5a98
cmp eax, 0x5de
jne 0x4b5d3f
mov eax, dword [esi + 4]
mov edx, dword [esi]
push 1
push 0x94
push eax
call dword [edx + 8]
add esp, 0xc
jmp 0x4b5bd8
cmp eax, 0x1011
jne 0x4b5ac3
cmp dword [esp + 0x1c], 9
je 0x4b5aca
jmp 0x4b5d3f
cmp eax, 0x20400200
jne 0x4b5b14
lea ebp, [esi + 0xe6dc]
mov dword [esp + 0x14], 3
mov edi, ebp
mov ebx, 3
push esi
call fcn.004a68b0
movsx ecx, ax
mov dword [esp + 0x24], ecx
add esp, 4
fild dword [esp + 0x20]
add edi, 4
dec ebx
fmul dword [0x574c24]
fstp dword [edi - 4]
jne 0x4b5adf
mov eax, dword [esp + 0x14]
add ebp, 0x10
dec eax
mov dword [esp + 0x14], eax
jne 0x4b5ad8
mov eax, dword [esp + 0x10]
cmp eax, 0x1012
je 0x4b5b22
cmp eax, 0x20400600
jne 0x4b5b5e
cmp dword [esp + 0x1c], 4
jne 0x4b5b5e
mov dword [esi + 0x65c4], 0
mov edi, 4
push esi
call fcn.004a68b0
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 0x4b5b38
mov eax, dword [esp + 0x10]
cmp eax, 0x1017
je 0x4b5b6c
cmp eax, 0x20400100
jne 0x4b5b92
push esi
call fcn.004a68b0
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x574c24]
fstp dword [esi + 0xe6bc]
cmp eax, 0x1018
je 0x4b5ba0
cmp eax, 0x20400100
jne 0x4b5bc6
push esi
call fcn.004a68b0
add esp, 4
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x574c24]
fstp dword [esi + 0xe6c4]
cmp eax, 0x2011
jne 0x4b5c26
cmp dword [esp + 0x1c], 2
jne 0x4b5d3f
push esi
mov word [esi + 0x6244], 0x4d4d
call fcn.004a68b0
and eax, 0xffff
push esi
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fmul dword [0x574c24]
fstp dword [esi + 0xe6bc]
call fcn.004a68b0
add esp, 8
and eax, 0xffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
fild dword [esp + 0x20]
fmul dword [0x574c24]
fstp dword [esi + 0xe6c4]
cmp eax, 0x2020
jne 0x4b5c4e
mov edi, dword [esp + 0x1bc]
push 0x102
push 0x101
push edi
push esi
call fcn.004b4b70
mov eax, dword [esp + 0x20]
add esp, 0x10
jmp 0x4b5c55
mov edi, dword [esp + 0x1bc]
cmp eax, 0x2040
jne 0x4b5c6b
push eax
push edi
push esi
call fcn.004b4c10
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp eax, 0xb028
jne 0x4b5c9f
mov ebx, dword [esi]
push 0
push esi
call fcn.004a6950
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.004b4b70
mov eax, dword [esp + 0x2c]
add esp, 0x1c
cmp eax, 0x4001
jne 0x4b5d3f
cmp dword [esp + 0x18], 3
jne 0x4b5d3f
mov eax, dword [esp + 0x1c]
cmp eax, 0x246
jne 0x4b5cc7
mov eax, 0x32
jmp 0x4b5cd6
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.004a68b0
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 0x4b5ce7
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.004a68b0
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 0x4b5d22
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 0x4b5045
jmp 0x4b5e29
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 0x4b5e29
cmp eax, 0x4000
jae 0x4b5e29
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.004a68b0
add esp, 4
and eax, 0xffff
cmp ebx, 0x100
mov dword [esp + 0x50], eax
jne 0x4b5e0f
cmp eax, ebx
jne 0x4b5e0f
cmp edi, ebx
jbe 0x4b5e0f
cmp edi, 0x280
jae 0x4b5e0f
cmp ebp, ebx
jbe 0x4b5e0f
cmp ebp, 0x280
jae 0x4b5e0f
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 0x4b5df1
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 0x4b5d8d
mov cx, word [esp + 0x64]
mov word [esi + 0x6244], cx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a4
ret