Function at 0x4c1b50
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x64
mov edx, dword [esp + 0x8c]
mov esi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x78]
mov ecx, dword [esi]
test edx, edx
je 0x4c1b74
mov eax, dword [ebp + 0x108]
mov dword [edx], eax
cmp dword [ebp + 0x5c], 0
js 0x4c1baf
mov eax, dword [esp + 0x84]
cmp dword [eax], 0
je 0x4c1bb6
mov eax, dword [esp + 0x88]
test eax, eax
je 0x4c1b96
cmp dword [eax], 0
jne 0x4c1bb8
sub ecx, dword [esi]
mov eax, ecx
mov ecx, ebp
mov edx, 0xffffffec
push eax
call fcn.004c2e50
add esp, 0x68
jmp 0x4c2e29
xor eax, eax
jmp 0x4c2e26
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x80]
mov ecx, dword [ebp + 0x30]
test ecx, ecx
je 0x4c1be1
lea edx, [ebp + 0x28]
mov dword [ebp + 0x10], edx
lea edi, [ecx + ebp]
add edi, 0x28
mov eax, 2
jmp 0x4c1bf0
mov edx, dword [eax]
mov ecx, dword [esi]
mov dword [ebp + 0x10], edx
lea edi, [edx + ecx]
mov eax, 1
lea ebx, [ebp + 8]
mov dword [esp + 8], ebx
mov dword [ebp + 0x18], edi
add ecx, 0xffffffe4
add edi, 0xffffffe5
cmp ecx, 0xffffffe3
cmovae edi, edx
mov dword [ebp + 0x14], edi
lea ecx, [ebp + 0x28]
mov dword [esp + 0x58], ecx
lea ecx, [ebp + 0xcc]
mov dword [esp + 0x10], ecx
lea ecx, [ebp + 0x250]
mov dword [esp + 0x50], ecx
lea ecx, [ebp + 0x254]
mov dword [esp + 0x30], ecx
lea ecx, [ebp + 0x264]
mov dword [esp + 0x34], ecx
lea ecx, [ebp + 0xf8]
mov dword [esp + 0x4c], ecx
lea ecx, [ebp + 0xfc]
mov dword [esp + 0x48], ecx
lea ecx, [ebp + 0x7c]
mov dword [esp + 0x28], ecx
lea ecx, [ebp + 0x8c]
mov dword [esp + 0x2c], ecx
lea ecx, [ebp + 0x9c]
mov dword [esp + 0x24], ecx
lea ecx, [ebp + 0x34c]
mov dword [esp + 0x44], ecx
lea ecx, [ebp + 0x294]
mov dword [esp + 0x20], ecx
lea ecx, [ebp + 0x4e4]
mov dword [esp + 0x40], ecx
lea ecx, [ebp + 0x4b0]
mov dword [esp + 0x3c], ecx
lea ecx, [ebp + 0x287]
mov dword [esp + 0x38], ecx
jmp case.default.0x4c1d61
mov dword [ebp + 0x14], eax
mov eax, 1
nop word cs:[eax + eax]
cmp eax, 1
je 0x4c1d50
cmp eax, 2
jne 0x4c2d8d
cmp dword [ebp + 0x64], 0
mov edi, dword [esp + 0x80]
je 0x4c1cf5
mov ecx, ebp
mov edx, dword [esp + 0x84]
push 1
push dword [esp + 0x90]
push dword [esp + 0x24]
call fcn.004c2e90
add esp, 0xc
test eax, eax
js 0x4c2e0f
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x30]
test eax, eax
je 0x4c2d9c
cmp ecx, dword [ebp + 0x18]
je 0x4c1d84
cmp dword [esi], 0
je 0x4c2dc8
mov ecx, dword [edi]
movzx ecx, byte [ecx]
mov byte [ebp + eax + 0x28], cl
mov eax, dword [ebp + 0x30]
lea ecx, [eax + 1]
mov dword [ebp + 0x30], ecx
mov edx, dword [esp + 0x58]
mov dword [ebp + 0x10], edx
lea ecx, [edx + eax]
inc ecx
mov dword [ebp + 0x18], ecx
lea ecx, [eax - 0x1b]
cmp ecx, 0xffffffe3
lea eax, [edx + eax - 0x1a]
cmovae eax, edx
mov dword [ebp + 0x14], eax
inc dword [edi]
dec dword [esi]
mov eax, 1
jmp case.default.0x4c1d61
mov ecx, dword [ebp]
mov eax, 1
cmp ecx, 0x1a
ja case.default.0x4c1d61
jmp dword [ecx*4 + 0x830440]
mov ecx, ebp
call fcn.004c48a0
cmp eax, 2
jne case.default.0x4c1d61
mov ecx, ebp
call fcn.004c56d0
jmp case.default.0x4c1d61
mov dword [ebp + 0x30], 0
mov eax, dword [edi]
mov edx, dword [esi]
mov dword [ebp + 0x10], eax
lea ecx, [eax + edx]
mov dword [ebp + 0x18], ecx
add edx, 0xffffffe4
cmp edx, 0xffffffe2
ja 0x4c1c9b
add ecx, 0xffffffe5
mov dword [ebp + 0x14], ecx
mov eax, 1
jmp case.default.0x4c1d61
mov ecx, ebp
mov edx, dword [esp + 0x84]
push 0
push dword [esp + 0x90]
push dword [esp + 0x24]
call fcn.004c2e90
add esp, 0xc
cmp eax, 1
jne case.default.0x4c1d61
mov ecx, ebp
call fcn.004c6560
mov eax, dword [ebp + 0x40]
mov ecx, dword [ebp + 0x24c]
shr ecx, 6
mov edx, 1
shl edx, cl
cmp eax, edx
jne 0x4c1dff
mov ecx, dword [ebp + 0x38]
mov dword [ebp + 0x3c], ecx
mov ecx, dword [ebp]
cmp ecx, 0x10
je 0x4c2058
cmp ecx, 0xf
jne 0x4c2069
mov ebx, dword [ebp + 0x260]
test ebx, ebx
je 0x4c2ccc
mov ecx, dword [ebx + 0x14]
cmp dword [ebx + 0x10], ecx
je 0x4c2ccc
mov edx, dword [ebp + 0x34]
mov dword [esp + 4], edx
mov dword [esp], edx
jmp 0x4c1e5a
add esi, ebp
mov ebp, dword [esp + 0x78]
mov eax, dword [ebp + 0x40]
mov edx, esi
mov dword [esp], esi
cmp esi, eax
mov esi, dword [esp + 0x7c]
je 0x4c2cb2
mov ebp, dword [ebx + 0x10]
sub ebp, ecx
je 0x4c2cac
mov edx, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
mov ecx, dword [ebx + edx*4 + 0x18]
add ecx, esi
add esi, dword [ebx + edx*4 + 0x58]
mov edi, dword [ebx + edx*4 + 0x5c]
sub edi, esi
mov edx, dword [esp + 0x78]
mov edx, dword [edx + 0x64]
mov esi, dword [esp]
add edx, esi
sub eax, esi
cmp ebp, edi
cmovge ebp, edi
cmp ebp, eax
cmovge ebp, eax
push ebp
push ecx
push edx
call fcn.004f8d80
add esp, 0xc
add dword [ebx + 0xc], ebp
mov ecx, dword [ebx + 0x14]
add ecx, ebp
mov dword [ebx + 0x14], ecx
cmp ebp, edi
jne 0x4c1e40
inc dword [ebx + 8]
mov dword [ebx + 0xc], 0
jmp 0x4c1e40
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
jmp 0x4c22eb
mov eax, dword [ebp + 4]
jmp 0x4c2592
mov eax, dword [ebp + 4]
jmp 0x4c2286
mov ecx, ebp
call fcn.004c42c0
mov ecx, eax
mov eax, 2
cmp ecx, 1
jne case.default.0x4c1d61
jmp 0x4c2aa1
mov ecx, dword [ebp + 0x24c]
jmp 0x4c20cd
push dword [esp + 8]
call fcn.004c8930
add esp, 4
mov ecx, eax
mov eax, 2
test ecx, ecx
je case.default.0x4c1d61
mov ecx, dword [ebp + 0x24c]
mov eax, ecx
and eax, 0xffffffdf
mov dword [ebp + 0x24c], eax
mov edx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
lea eax, [edi - 1]
mov dword [ebp + 0xc], eax
mov ebx, edx
shr ebx, 1
mov dword [ebp + 8], ebx
test dl, 1
jne 0x4c29ec
and ecx, 0xfffff01f
or ecx, 0x400
jmp 0x4c2a18
mov eax, 0xfffffff6
cmp dword [ebp + 0x60], 0
js case.default.0x4c1d61
push ebp
call fcn.004c8710
add esp, 4
test byte [ebp + 0x24c], 1
jne 0x4c2a34
mov dword [ebp], 3
mov eax, 1
jmp case.default.0x4c1d61
mov ecx, dword [ebp + 0xc]
cmp ecx, 6
jae 0x4c2084
mov edx, dword [ebp + 0x10]
mov eax, 2
cmp edx, dword [ebp + 0x18]
je case.default.0x4c1d61
movzx eax, byte [edx]
shl eax, cl
or eax, dword [ebp + 8]
or ecx, 8
inc edx
mov dword [ebp + 0x10], edx
jmp 0x4c208a
mov ecx, dword [ebp + 0xc]
cmp ecx, 6
jae 0x4c2225
mov edx, dword [ebp + 0x10]
mov eax, 2
cmp edx, dword [ebp + 0x18]
je case.default.0x4c1d61
movzx eax, byte [edx]
shl eax, cl
or eax, dword [ebp + 8]
or ecx, 8
inc edx
mov dword [ebp + 0x10], edx
jmp 0x4c222b
mov eax, dword [ebp + 4]
cmp eax, 3
jl 0x4c21dd
mov dword [ebp], 5
mov eax, 1
jmp case.default.0x4c1d61
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x1c]
push ebp
push dword [esp + 0x90]
call fcn.004c4120
add esp, 8
cmp eax, 1
jne case.default.0x4c1d61
jmp 0x4c2aa1
mov ecx, dword [ebp + 4]
test ecx, ecx
je 0x4c26c5
cmp ecx, 2
je 0x4c26a5
mov edi, dword [esp + 0x2c]
cmp ecx, 1
je 0x4c26a9
jmp 0x4c2e3e
mov dword [ebp], 0xa
mov eax, 1
jmp case.default.0x4c1d61
cmp dword [ebp + 4], 0
je 0x4c2a8a
mov dword [ebp], 8
mov eax, 1
jmp case.default.0x4c1d61
mov eax, dword [esp + 8]
mov eax, dword [eax]
mov edx, eax
and edx, 0x3f
add ecx, 0xfffffffa
mov dword [ebp + 0xc], ecx
shr eax, 6
mov dword [ebp + 8], eax
mov eax, edx
shl eax, 6
mov ecx, dword [ebp + 0x24c]
mov edi, 0xfffff03f
and ecx, edi
or ecx, eax
mov dword [ebp + 0x24c], ecx
add edx, 0xffffffe1
mov eax, 0xfffffff3
cmp edx, 0xffffffeb
jb case.default.0x4c1d61
mov dword [ebp], 2
shr ecx, 6
mov eax, 1
shl eax, cl
add eax, 0xfffffff0
mov dword [ebp + 0x38], eax
push 0x3030
push dword [ebp + 0x24]
call dword [ebp + 0x1c]
add esp, 8
mov ecx, eax
mov dword [ebp + 0xac], eax
mov eax, 0xffffffe2
test ecx, ecx
je case.default.0x4c1d61
add ecx, 0x1da0
mov dword [ebp + 0xb0], ecx
mov dword [ebp], 3
push ebp
call fcn.004c8650
add esp, 4
mov dword [ebp], 4
mov ecx, ebp
mov edx, dword [esp + 8]
call fcn.004c2f90
cmp eax, 1
jne case.default.0x4c1d61
mov edx, dword [ebp + 0x24c]
test dl, 6
je 0x4c2199
mov eax, dword [ebp + 0xc]
mov ecx, eax
and ecx, 7
je 0x4c2695
mov esi, dword [ebp + 8]
mov edi, dword [0x88fc7c]
mov edi, dword [edi + ecx*4]
and edi, esi
and eax, 0xfffffff8
mov dword [ebp + 0xc], eax
shr esi, cl
mov dword [ebp + 8], esi
cmp eax, 0x1f
ja 0x4c217f
mov esi, 0xffffffff
mov ecx, eax
shl esi, cl
not esi
mov eax, dword [esp + 8]
and dword [eax], esi
mov eax, 0xfffffff2
test edi, edi
mov esi, dword [esp + 0x7c]
jne case.default.0x4c1d61
test dl, 4
jne 0x4c2ad6
cmp dword [ebp + 0x60], 0
je 0x4c2aa1
mov ecx, ebp
call fcn.004c33d0
test byte [ebp + 0x24c], 2
jne 0x4c2a79
mov dword [ebp + 4], 0
mov eax, dword [esp + 0x44]
mov dword [ebp + 0x328], eax
pxor xmm0, xmm0
movdqu xmmword [ebp + 0x284], xmm0
mov dword [ebp], 0x12
xor eax, eax
mov ecx, dword [esp + 0x10]
lea eax, [ecx + eax*4]
mov ecx, ebp
mov edx, dword [esp + 8]
push eax
call fcn.004c3450
add esp, 4
cmp eax, 1
jne case.default.0x4c1d61
mov eax, dword [ebp + 4]
inc dword [ebp + eax*4 + 0xcc]
mov eax, dword [ebp + 4]
cmp dword [ebp + eax*4 + 0xcc], 1
ja 0x4c258b
inc eax
mov dword [ebp + 4], eax
mov eax, 1
jmp case.default.0x4c1d61
mov eax, dword [esp + 8]
mov eax, dword [eax]
add ecx, 0xfffffffa
mov dword [ebp + 0xc], ecx
mov ecx, eax
shr ecx, 6
mov dword [ebp + 8], ecx
mov ecx, eax
and ecx, 3
mov dword [ebp + 0xf0], ecx
shr eax, 2
and eax, 0xf
shl eax, cl
mov dword [ebp + 0xf4], eax
push dword [ebp + 0xcc]
push dword [ebp + 0x24]
call dword [ebp + 0x1c]
add esp, 8
mov ecx, eax
mov dword [ebp + 0x258], eax
mov eax, 0xffffffeb
test ecx, ecx
je case.default.0x4c1d61
mov dword [ebp + 4], 0
mov dword [ebp], 6
xor eax, eax
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx]
jmp 0x4c22b7
mov edx, dword [esp + 8]
mov edx, dword [edx]
add ecx, 0xfffffffe
mov dword [ebp + 0xc], ecx
mov ecx, edx
shr ecx, 2
mov dword [ebp + 8], ecx
and dl, 3
mov ecx, dword [ebp + 0x258]
mov byte [ecx + eax], dl
inc eax
mov ecx, dword [ebp + 0xcc]
cmp eax, ecx
jge 0x4c22e4
mov ecx, dword [ebp + 0xc]
cmp ecx, 2
jae 0x4c2290
mov esi, dword [ebp + 0x10]
cmp esi, dword [ebp + 0x18]
je 0x4c2a71
movzx edx, byte [esi]
shl edx, cl
or edx, dword [ebp + 8]
or ecx, 8
inc esi
mov dword [ebp + 0x10], esi
mov esi, dword [esp + 0x7c]
jmp 0x4c2296
mov dword [ebp], 0x16
shl ecx, 6
mov edx, dword [esp + 0x50]
push ebp
push dword [esp + 0x34]
call fcn.004c4410
add esp, 8
cmp eax, 1
jne case.default.0x4c1d61
mov eax, dword [esp + 0x34]
pxor xmm0, xmm0
movdqu xmmword [eax + 0x10], xmm0
movdqu xmmword [eax], xmm0
mov eax, dword [esp + 0x10]
mov edi, dword [eax]
test edi, edi
je 0x4c23fa
mov eax, dword [esp + 0x30]
mov edx, dword [eax]
xor ecx, ecx
jmp 0x4c234c
inc ecx
add edx, 0x40
cmp edi, ecx
je 0x4c23fa
movzx ebx, word [edx]
movd xmm0, ebx
movdqu xmm3, xmmword [edx + 0x20]
movdqu xmm4, xmmword [edx + 0x30]
movdqa xmm1, xmm0
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0
pshufd xmm2, xmm1, 0
pcmpeqb xmm4, xmm2
pcmpeqb xmm3, xmm2
pand xmm3, xmm4
pmovmskb esi, xmm3
xor esi, 0xffff
jne 0x4c2340
movdqu xmm3, xmmword [edx + 0x10]
pcmpeqb xmm3, xmm2
pmovmskb esi, xmm3
not esi
test si, si
jne 0x4c2340
movq xmm2, qword [edx + 8]
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
not eax
test al, al
jne 0x4c2340
movd eax, xmm1
cmp dword [edx + 4], eax
jne 0x4c2340
movdqa xmm1, xmm0
psrlw xmm1, 8
pcmpeqb xmm1, xmm0
movd eax, xmm1
test al, 1
je 0x4c2340
cmp byte [edx + 2], bl
jne 0x4c2340
cmp byte [edx + 3], bl
jne 0x4c2340
mov eax, 1
shl eax, cl
mov esi, ecx
shr esi, 5
mov ebx, dword [esp + 0x34]
or dword [ebx + esi*4], eax
jmp 0x4c2340
mov dword [ebp], 0x17
mov esi, dword [esp + 0x7c]
mov edx, dword [ebp + 0xf0]
lea ecx, [edx + 1]
mov eax, 0x18
shl eax, cl
mov edi, dword [ebp + 0xf4]
test byte [ebp + 0x24c], 0x20
jne 0x4c2433
lea ebx, [edi + eax]
add ebx, 0x10
mov dword [esp + 4], ebx
jmp 0x4c24cc
mov dword [esp + 0x18], ecx
lea ebx, [edi + 0x10]
mov ecx, 0x8000000c
cmp edi, 0x7ffffffb
ja 0x4c24bb
mov dword [esp], ebx
mov ebp, 0x7ffffffc
sub ebp, edi
mov ebx, 0xffffffff
mov eax, 0xffffffff
mov ecx, edx
shl eax, cl
mov dword [esp + 4], eax
shr ebp, cl
add ebp, 4
mov ecx, 0xfffffffb
mov esi, ebp
mov eax, ebp
nop word cs:[eax + eax]
shr eax, 1
inc ebx
add ecx, 2
cmp esi, 3
mov esi, eax
ja 0x4c2480
xor eax, eax
bt ebp, ebx
setb al
add eax, ecx
mov ebx, dword [esp]
mov ecx, ebx
cmp eax, 0xffffffff
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x7c]
je 0x4c24bb
mov ecx, edx
shl eax, cl
mov ecx, dword [esp + 4]
not ecx
or eax, ecx
lea ecx, [edi + eax]
add ecx, 0x11
mov dword [esp + 4], ecx
mov eax, 0x3e
mov ecx, dword [esp + 0x18]
shl eax, cl
add ebx, eax
mov ecx, dword [ebp + 0xd4]
shl ecx, 2
mov edx, dword [esp + 0x4c]
push ebp
push dword [esp + 0x4c]
call fcn.004c4410
add esp, 8
cmp eax, 1
jne case.default.0x4c1d61
push dword [ebp + 0x250]
push 0x100
push 0x100
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x34]
push ebx
push ebp
call fcn.004c88b0
add esp, 0x14
mov ebp, eax
mov eax, dword [esp + 0x78]
push dword [eax + 0xd0]
push 0x2c0
push 0x2c0
push dword [esp + 0x38]
push dword [esp + 0x88]
call fcn.004c88b0
add esp, 0x14
mov edi, eax
and edi, ebp
mov ebp, dword [esp + 0x78]
push dword [ebp + 0xf8]
push dword [esp + 8]
push dword [esp + 8]
push dword [esp + 0x30]
push ebp
call fcn.004c88b0
add esp, 0x14
and eax, edi
test al, 1
je 0x4c2e2e
mov dword [ebp + 4], 0
mov dword [ebp], 0x18
xor ecx, ecx
mov edi, ebx
cmp dword [ebp + 0x284], 1
je 0x4c26b2
jmp 0x4c26d2
mov dword [ebp], 0x13
mov ecx, dword [ebp + eax*4 + 0xcc]
add ecx, 2
imul eax, eax, 0x9e0
add eax, dword [ebp + 0xac]
mov edx, ecx
push ebp
push 0
push eax
call fcn.004c35c0
add esp, 0xc
cmp eax, 1
jne case.default.0x4c1d61
mov dword [ebp], 0x14
imul eax, dword [ebp + 4], 0x630
add eax, dword [ebp + 0xb0]
mov ecx, 0x1a
mov edx, 0x1a
push ebp
push 0
push eax
call fcn.004c35c0
add esp, 0xc
cmp eax, 1
jne case.default.0x4c1d61
mov dword [ebp], 0x15
mov eax, dword [ebp + 4]
cmp dword [ebp + 0x244], 0
mov dword [esp], eax
je 0x4c2613
mov edi, dword [ebp + 0xc8]
jmp 0x4c2bea
imul edx, eax, 0x630
add edx, dword [ebp + 0xb0]
mov eax, dword [ebp + 0xc]
cmp eax, 0xf
jae 0x4c268a
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x18]
cmp edi, ecx
je 0x4c2ab2
mov dword [esp + 4], ecx
movzx ebx, byte [edi]
mov ecx, eax
shl ebx, cl
or ebx, dword [ebp + 8]
mov dword [ebp + 8], ebx
lea ecx, [eax + 8]
mov dword [ebp + 0xc], ecx
lea ebp, [edi + 1]
mov esi, dword [esp + 0x78]
mov dword [esi + 0x10], ebp
cmp eax, 6
ja 0x4c2b99
cmp ebp, dword [esp + 4]
mov ebp, dword [esp + 0x78]
je 0x4c2ab2
movzx ebx, byte [edi + 1]
shl ebx, cl
or ebx, dword [ebp + 8]
mov dword [ebp + 8], ebx
or eax, 0x10
mov dword [ebp + 0xc], eax
add edi, 2
mov dword [ebp + 0x10], edi
jmp 0x4c2b9b
mov ecx, dword [esp + 8]
mov ebx, dword [ecx]
jmp 0x4c2b9b
xor edi, edi
cmp eax, 0x1f
jbe 0x4c216e
jmp 0x4c217f
mov edi, dword [esp + 0x24]
cmp dword [ebp + 0x284], 1
jne 0x4c26d2
mov eax, dword [ebp + 0x980]
movzx edx, word [edi + 0xc]
cmp eax, edx
jl 0x4c26f9
jmp 0x4c275c
mov edi, dword [esp + 0x28]
cmp dword [ebp + 0x284], 1
je 0x4c26b2
mov eax, dword [edi + 4]
mov dword [ebp + 0x984], eax
mov dword [ebp + 0x980], 0
mov dword [ebp + 0x284], 1
xor eax, eax
movzx edx, word [edi + 0xc]
cmp eax, edx
jge 0x4c275c
mov eax, dword [ebp + 0x984]
lea ebx, [esp + 0x60]
nop word cs:[eax + eax]
movzx ecx, word [edi + 8]
movzx edx, word [edi + 0xa]
push ebp
push ebx
push eax
call fcn.004c35c0
add esp, 0xc
cmp eax, 1
jne case.default.0x4c1d61
mov ecx, dword [ebp + 0x980]
mov eax, dword [ebp + 0x984]
mov edx, dword [edi]
mov dword [edx + ecx*4], eax
mov edx, dword [esp + 0x60]
lea eax, [eax + edx*4]
mov dword [ebp + 0x984], eax
inc ecx
mov dword [ebp + 0x980], ecx
movzx edx, word [edi + 0xc]
cmp ecx, edx
jl 0x4c2710
mov ecx, dword [ebp + 4]
mov dword [ebp + 0x284], 0
lea eax, [ecx + 1]
mov dword [ebp + 4], eax
mov eax, 1
cmp ecx, 2
jl case.default.0x4c1d61
mov dword [ebp], 0x19
mov eax, dword [ebp + 0xdc]
mov ecx, eax
shl ecx, 6
mov edx, dword [ebp + 0x254]
lea esi, [edx + ecx]
mov dword [ebp + 0x74], esi
mov esi, eax
shr esi, 5
mov esi, dword [ebp + esi*4 + 0x264]
xor ebx, ebx
bt esi, eax
setb bl
mov dword [ebp + 0xb4], ebx
movzx ecx, byte [edx + ecx]
mov edx, dword [ebp + 0x7c]
mov esi, dword [ebp + 0x8c]
mov ecx, dword [edx + ecx*4]
mov dword [ebp + 0x100], ecx
mov ecx, dword [ebp + 0x258]
movzx eax, byte [ecx + eax]
and eax, 3
shl eax, 9
add eax, dword [0x88fc2c]
mov dword [ebp + 0x70], eax
mov eax, dword [ebp + 0xfc]
mov dword [ebp + 0x78], eax
mov eax, dword [esi]
mov esi, dword [esp + 0x7c]
mov dword [ebp + 0x6c], eax
mov ecx, ebp
call fcn.004c4810
movdqa xmm5, xmmword [0x830420]
movdqa xmm4, xmmword [0x830410]
pcmpeqd xmm3, xmm3
mov ecx, eax
mov eax, 0xffffffe5
test ecx, ecx
je case.default.0x4c1d61
mov eax, dword [ebp + 0xf0]
mov dword [esp + 0x54], eax
mov esi, dword [ebp + 0xf4]
movzx eax, word [ebp + 0xa6]
mov dword [esp + 0x18], eax
test esi, esi
mov dword [esp + 0x14], esi
mov ebx, 0x10
je 0x4c2956
xor ecx, ecx
cmp esi, 7
jbe 0x4c28d4
mov eax, dword [esp + 0x20]
lea edi, [eax + esi]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x14]
lea esi, [edx + esi*4]
cmp eax, esi
mov esi, dword [esp + 0x14]
setb al
cmp edx, edi
setb dh
test al, dh
jne 0x4c28d4
mov ecx, esi
and ecx, 0xfffffff8
lea ebx, [ecx + 0x10]
xor edx, edx
movdqa xmm0, xmmword [0x830400]
mov eax, dword [esp + 0x20]
nop
mov dword [eax + edx], 0
mov dword [eax + edx + 4], 0
movdqa xmm1, xmm0
psubd xmm1, xmm3
movdqa xmm2, xmm0
paddd xmm2, xmm4
movdqu xmmword [eax + edx*4 + 0x250], xmm1
movdqu xmmword [eax + edx*4 + 0x260], xmm2
add edx, 8
paddd xmm0, xmm5
cmp ecx, edx
jne 0x4c2890
cmp esi, ecx
je 0x4c2956
mov edi, esi
mov edx, ecx
and edi, 3
je 0x4c28f4
nop dword [eax]
mov byte [ebp + ebx + 0x284], 0
inc edx
mov dword [ebp + ebx*4 + 0x4a4], edx
inc ebx
dec edi
jne 0x4c28e0
sub ecx, esi
cmp ecx, 0xfffffffc
ja 0x4c2956
sub esi, edx
mov eax, dword [esp + 0x3c]
lea ebp, [eax + ebx*4]
mov eax, dword [esp + 0x38]
lea ecx, [eax + ebx]
mov eax, esi
xor edi, edi
nop
mov byte [ecx + edi - 3], 0
lea esi, [edx + edi]
inc esi
mov dword [ebp + edi*4 - 0xc], esi
mov byte [ecx + edi - 2], 0
lea esi, [edx + edi + 2]
mov dword [ebp + edi*4 - 8], esi
mov byte [ecx + edi - 1], 0
lea esi, [edx + edi + 3]
mov dword [ebp + edi*4 - 4], esi
mov byte [ecx + edi], 0
lea esi, [edx + edi]
add esi, 4
mov dword [ebp + edi*4], esi
add edi, 4
cmp eax, edi
jne 0x4c2910
add ebx, edi
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x14]
cmp ebx, dword [esp + 0x18]
jae 0x4c29cc
mov dword [esp], 1
xor eax, eax
nop word cs:[eax + eax]
mov dword [esp + 4], eax
lea edi, [eax + 2]
mov ecx, dword [esp]
shl edi, cl
add edi, 0xfffffffc
mov edx, dword [esp + 0x54]
mov ecx, edx
shl edi, cl
add edi, esi
mov esi, 1
nop
mov eax, dword [esp]
mov byte [ebp + ebx + 0x284], al
lea ebp, [edi + esi]
mov eax, esi
mov ecx, edx
shr eax, cl
mov ecx, dword [esp + 0x78]
mov dword [ecx + ebx*4 + 0x4a4], ebp
mov ebp, dword [esp + 0x78]
inc ebx
inc esi
test eax, eax
je 0x4c2990
mov eax, dword [esp + 4]
add dword [esp], eax
xor eax, 1
cmp ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
jb 0x4c2970
mov dword [ebp], 7
mov esi, dword [esp + 0x7c]
mov ecx, ebp
call fcn.004c48a0
cmp eax, 2
jne case.default.0x4c1d61
jmp 0x4c1d78
lea esi, [edi - 4]
mov eax, edx
shr eax, 4
mov dword [ebp + 0xc], esi
mov dword [ebp + 8], eax
and ebx, 7
je 0x4c2b08
shl ebx, 6
and ecx, 0xfffff01f
add ecx, ebx
add ecx, 0x440
mov esi, dword [esp + 0x7c]
mov dword [ebp + 0x24c], ecx
test cl, 0x20
jne 0x4c2a60
mov dword [ebp], 2
mov eax, 1
jmp case.default.0x4c1d61
mov edx, dword [ebp + 0xc]
mov ecx, edx
and ecx, 7
je 0x4c2b59
mov eax, dword [ebp + 8]
mov edi, dword [0x88fc7c]
mov edi, dword [edi + ecx*4]
and edi, eax
and edx, 0xfffffff8
mov dword [ebp + 0xc], edx
shr eax, cl
mov dword [ebp + 8], eax
jmp 0x4c2b5b
mov dword [ebp], 1
mov eax, 1
jmp case.default.0x4c1d61
mov dword [ebp + 4], eax
jmp 0x4c2c9e
mov dword [ebp], 0xb
mov eax, 1
jmp case.default.0x4c1d61
cmp dword [ebp + 0x60], 0
je 0x4c2aa1
mov dword [ebp], 9
mov eax, 1
jmp case.default.0x4c1d61
mov dword [ebp], 0xe
mov eax, 1
jmp case.default.0x4c1d61
mov ecx, edx
mov edx, dword [esp + 8]
lea eax, [esp + 0x5c]
push eax
call fcn.004c6720
add esp, 4
test eax, eax
je 0x4c2c9e
mov edi, dword [esp + 0x5c]
jmp 0x4c2bea
mov dword [ebp], 0xc
mov ecx, dword [ebp + 0x220]
mov eax, 1
test ecx, ecx
je case.default.0x4c1d61
push dword [ebp + 0x60]
push dword [ebp + 0x228]
call ecx
add esp, 8
mov eax, 1
jmp case.default.0x4c1d61
lea esi, [edi - 7]
mov ebx, edx
shr ebx, 7
mov dword [ebp + 0xc], esi
mov dword [ebp + 8], ebx
and eax, 7
je 0x4c2cea
cmp eax, 1
mov esi, dword [esp + 0x7c]
jne 0x4c2cfb
mov eax, 0xfffffff3
test cl, 0x20
je case.default.0x4c1d61
add edi, 0xfffffff8
mov dword [ebp + 0xc], edi
mov esi, edx
shr esi, 8
mov dword [ebp + 8], esi
mov esi, dword [esp + 0x7c]
test dl, dl
js case.default.0x4c1d61
jmp 0x4c2a18
xor edi, edi
cmp edx, 0x1f
ja 0x4c2b71
mov eax, 0xffffffff
mov ecx, edx
shl eax, cl
not eax
mov ecx, dword [esp + 8]
and dword [ecx], eax
mov eax, 0xfffffff1
test edi, edi
jne case.default.0x4c1d61
cmp dword [ebp + 0x30], 0
jne 0x4c2d46
cmp edx, 7
ja 0x4c2d11
mov eax, dword [ebp + 0x10]
jmp 0x4c2d1b
mov eax, ecx
movzx ecx, bl
lea ebp, [edx + ecx*4]
movzx ecx, byte [edx + ecx*4]
cmp ecx, 9
jb 0x4c2bd3
add eax, 0xfffffff8
shr ebx, 8
movzx edx, word [ebp + 2]
mov esi, dword [0x88fc7c]
mov ecx, dword [esi + ecx*4 - 0x20]
and ecx, ebx
and ecx, 0x7f
lea ecx, [ecx*4]
add ecx, ebp
lea ebp, [ecx + edx*4]
movzx ecx, byte [ecx + edx*4]
movzx edx, cl
shr ebx, cl
sub eax, edx
mov ecx, dword [esp + 0x78]
mov dword [ecx + 0xc], eax
mov dword [ecx + 8], ebx
movzx edi, word [ebp + 2]
mov ebp, ecx
mov ecx, dword [0x88fc30]
movzx eax, byte [ecx + edi*4 + 2]
movzx esi, word [ecx + edi*4]
mov edx, dword [ebp + 0xc]
cmp edx, eax
jae 0x4c2c35
mov dword [esp + 4], edi
mov ebx, dword [ebp + 0x10]
mov ebp, dword [ebp + 0x18]
nop word [eax + eax]
cmp ebx, ebp
je 0x4c2c86
movzx edi, byte [ebx]
mov ecx, edx
shl edi, cl
mov ecx, dword [esp + 0x78]
or edi, dword [ecx + 8]
mov dword [ecx + 8], edi
add edx, 8
mov dword [ecx + 0xc], edx
inc ebx
mov dword [ecx + 0x10], ebx
cmp edx, eax
jb 0x4c2c10
jmp 0x4c2c3b
mov ecx, dword [esp + 8]
mov edi, dword [ecx]
mov ecx, dword [0x88fc7c]
mov ebx, esi
mov esi, dword [ecx + eax*4]
and esi, edi
add esi, ebx
mov ecx, eax
shr edi, cl
sub edx, eax
mov ebp, dword [esp + 0x78]
mov dword [ebp + 0xc], edx
mov dword [ebp + 8], edi
mov eax, dword [esp]
mov dword [ebp + eax*4 + 0xbc], esi
mov dword [ebp + 0x244], 0
inc dword [ebp + 4]
mov dword [ebp], 0x12
mov eax, 1
mov esi, dword [esp + 0x7c]
jmp case.default.0x4c1d61
mov ebp, dword [esp + 0x78]
mov eax, dword [esp + 4]
mov dword [ebp + 0xc8], eax
mov dword [ebp + 0x244], 1
mov eax, 2
mov esi, dword [esp + 0x7c]
jmp case.default.0x4c1d61
mov edx, eax
mov ebp, dword [esp + 0x78]
mov ecx, dword [esp]
sub ecx, dword [esp + 4]
add ecx, dword [ebp + 0x34]
mov dword [ebp + 0x34], ecx
mov eax, 1
cmp ecx, edx
jge case.default.0x4c1d61
cmp dword [ebp + 0x60], 0
mov eax, 7
mov ecx, 0xe
cmove eax, ecx
mov dword [ebp], eax
mov eax, 1
jmp case.default.0x4c1d61
and ecx, 0xfffff01f
or ecx, 0x440
jmp 0x4c2a14
shl eax, 6
and ecx, 0xfffff01f
add ecx, eax
add ecx, 0x200
jmp 0x4c2a18
mov ecx, edx
shr ecx, 3
mov eax, dword [ebp + 0x10]
sub eax, ecx
mov edi, dword [esp + 0x80]
mov dword [ebp + 0x10], eax
and edx, 7
mov dword [ebp + 0xc], edx
mov esi, 0xffffffff
mov ecx, edx
shl esi, cl
not esi
and dword [ebp + 8], esi
mov ecx, dword [ebp + 0x18]
sub ecx, eax
mov esi, dword [esp + 0x7c]
mov dword [esi], ecx
mov dword [edi], eax
mov dword [ebp], 0x1a
cmp dword [ebp + 0x64], 0
je 0x4c2d7a
mov ecx, ebp
mov edx, dword [esp + 0x84]
push 1
push dword [esp + 0x90]
push dword [esp + 0x24]
call fcn.004c2e90
add esp, 0xc
cmp eax, 1
jne case.default.0x4c1d61
mov eax, dword [esp + 0xc]
sub eax, dword [esi]
mov ecx, ebp
mov edx, 1
push eax
jmp 0x4c2e1e
cmp dword [ebp + 0x30], 0
je 0x4c2dcf
mov dword [ebp + 0x30], 0
jmp 0x4c2e0f
mov dword [edi], ecx
mov edx, dword [ebp + 0x18]
mov eax, 2
sub edx, ecx
mov dword [esi], edx
je 0x4c2e0f
nop dword [eax]
movzx ecx, byte [ecx]
mov edx, dword [ebp + 0x30]
mov byte [ebp + edx + 0x28], cl
inc dword [ebp + 0x30]
mov ecx, dword [edi]
inc ecx
mov dword [edi], ecx
dec dword [esi]
jne 0x4c2db0
jmp 0x4c2e0f
mov eax, 2
jmp 0x4c2e0f
mov ecx, dword [ebp + 0xc]
cmp ecx, 7
ja 0x4c2ddc
mov edx, dword [ebp + 0x10]
jmp 0x4c2de6
mov esi, ecx
shr esi, 3
mov edx, dword [ebp + 0x10]
sub edx, esi
mov edi, dword [esp + 0x80]
mov dword [ebp + 0x10], edx
and ecx, 7
mov dword [ebp + 0xc], ecx
mov esi, 0xffffffff
shl esi, cl
not esi
and dword [ebp + 8], esi
mov ecx, dword [ebp + 0x18]
sub ecx, edx
mov esi, dword [esp + 0x7c]
mov dword [esi], ecx
mov dword [edi], edx
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x7c]
sub esi, dword [ecx]
mov ecx, ebp
mov edx, eax
push esi
call fcn.004c2e50
add esp, 4
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0xc]
sub eax, dword [esi]
mov ecx, ebp
mov edx, 0xffffffea
push eax
jmp 0x4c2e1e
mov eax, dword [esp + 0xc]
sub eax, dword [esi]
mov ecx, ebp
mov edx, 0xffffffe1
push eax
jmp 0x4c2e1e