Function at 0x4caa70
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x7c
push ebx
push ebp
push esi
mov esi, dword [esp + 0xac]
mov ebp, ecx
push edi
mov edi, dword [esp + 0xa0]
lea eax, [esp + 0xa8]
push esi
lea ecx, [esp + 0xa8]
push eax
push ecx
lea edx, [esp + 0xa8]
push edi
lea eax, [esp + 0xa8]
push edx
lea ecx, [esp + 0xa8]
push eax
lea edx, [esp + 0xa8]
push ecx
push edx
mov ecx, ebp
mov dword [esp + 0x54], ebp
call fcn.004bbc20
mov edx, dword [esp + 0x98]
test edx, edx
je 0x4cb462
mov ebx, dword [esp + 0x9c]
test ebx, ebx
je 0x4cb462
test esi, esi
mov dword [esp + 0x1c], 0
je 0x4cab55
cmp dword [esi], 0
je 0x4cab55
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.004c8460
mov ecx, dword [eax]
mov eax, dword [esp + 0x30]
test eax, eax
mov dword [esp + 0x1c], ecx
je 0x4cab29
mov ecx, dword [eax + 0x24]
dec ecx
mov dword [eax + 0x24], ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x24]
test eax, eax
jg 0x4cab29
test ecx, ecx
je 0x4cab29
mov edx, dword [ecx]
push 1
call dword [edx]
add esi, 4
mov ebx, dword [esp + 0x9c]
mov eax, dword [esi]
mov dword [esp + 0x6c], eax
mov ecx, dword [esi + 4]
mov dword [esp + 0x70], ecx
mov edx, dword [esi + 8]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x98]
mov eax, dword [esi + 0xc]
mov dword [esp + 0x78], eax
mov eax, dword [ebp + 0xc]
cmp eax, 8
jne 0x4cabd8
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x4cabd8
mov ecx, dword [edi + 0x10]
test ecx, ecx
jne 0x4cabd8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4cabb3
mov eax, dword [esp + 0x94]
mov edi, dword [esp + 0x70]
mov ecx, eax
push 0
sub ecx, edi
mov edi, dword [esp + 0x70]
push 0
push ecx
mov ecx, dword [esp + 0x9c]
mov esi, ecx
sub esi, edi
push esi
mov esi, dword [esp + 0x2c]
push 0xffffffffffffffff
push esi
push ebx
push edx
push eax
push ecx
mov ecx, ebp
call fcn.004cceb0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret 0x24
mov eax, dword [esp + 0x90]
push 0xffffffffffffffff
push ebx
push edx
mov edx, dword [esp + 0xa0]
mov ecx, ebp
push edx
push eax
call fcn.004cd1d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret 0x24
cmp eax, 8
mov dword [esp + 0x48], 0
je 0x4cac4c
cmp dword [edi + 0xc], 0x18
jge 0x4cac4c
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x80], ecx
add ebx, ecx
lea ecx, [esp + 0x7c]
mov dword [esp + 0x7c], eax
add edx, eax
xor eax, eax
push ecx
push 0x18
mov ecx, edi
mov dword [esp + 0x8c], edx
mov dword [esp + 0x90], ebx
mov dword [esp + 0xb0], eax
mov dword [esp + 0xac], eax
call fcn.004f5270
mov ebx, dword [esp + 0x9c]
mov edi, eax
mov dword [esp + 0xa0], edi
mov dword [esp + 0x48], 1
mov esi, dword [esp + 0x34]
mov ebp, dword [esp + 0xac]
mov ecx, dword [esi + 0xc]
mov eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0xc]
cdq
and edx, 7
add eax, edx
mov edx, 2
sar eax, 3
cmp ecx, 8
mov dword [esp + 0x10], eax
jne 0x4cad5b
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x4cac9b
mov dword [esp + 0x18], 0x10
jmp 0x4cad91
cmp eax, 1
jne 0x4cad48
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x18], 0x13
mov edi, dword [edx + 0x18]
test edi, edi
je 0x4cad37
push 0x100
call fcn.0048b3b0
mov ebx, eax
add esp, 4
mov dword [esp + 0x2c], ebx
xor esi, esi
mov ecx, dword [edi]
add edi, 4
mov eax, ecx
shr eax, 8
and eax, 0xff
lea edx, [eax*8]
sub edx, eax
lea edx, [eax + edx*4]
lea edx, [eax + edx*2]
mov eax, ecx
shr eax, 0x10
and eax, 0xff
and ecx, 0xff
imul eax, eax, 0x1e
add edx, eax
lea eax, [ecx + ecx*4]
lea ecx, [ecx + eax*2]
mov eax, 0x51eb851f
add edx, ecx
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov byte [esi + ebx], dl
inc esi
cmp esi, 0x100
jl 0x4caccf
mov ebx, dword [esp + 0x9c]
mov edi, dword [esp + 0xa0]
jmp 0x4cad91
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x2c], 0
jmp 0x4cad91
mov esi, dword [edi + 0x10]
xor ecx, ecx
cmp esi, edx
setne cl
add ecx, 0x11
mov dword [esp + 0x18], ecx
jmp 0x4cad91
mov ecx, dword [edi + 0x10]
xor eax, eax
cmp ecx, edx
mov ecx, dword [esi + 0x10]
setne al
sub ecx, edx
neg ecx
sbb ecx, ecx
and ecx, edx
mov edx, dword [esp + 0x1c]
add eax, ecx
mov ecx, ebp
neg edx
sbb edx, edx
and edx, 8
add eax, edx
neg ecx
sbb ecx, ecx
and ecx, 0xfffffffc
add ecx, 4
add eax, ecx
mov dword [esp + 0x18], eax
test ebx, ebx
mov dword [esp + 0x28], 0
jle 0x4cb436
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x94]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
imul ecx, dword [esp + 0x90]
lea edi, [ebx + edx]
imul edi, dword [eax + 0x14]
add edi, ecx
mov ecx, dword [eax + 0x1c]
mov eax, dword [esp + 0xa8]
add edi, ecx
mov ecx, dword [esp + 0xa0]
add eax, ebx
push eax
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, dword [esp + 0x10]
mov esi, eax
imul ecx, dword [esp + 0xa4]
add esi, ecx
mov ecx, dword [esp + 0x1c]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x20], eax
je 0x4cae2b
mov edx, dword [esp + 0x94]
mov eax, ebx
mov ebx, dword [esp + 0x70]
sub eax, ebx
mov ebx, dword [ecx + 0x1c]
add eax, edx
mov edx, dword [esp + 0x6c]
imul eax, dword [ecx + 0x14]
mov ecx, dword [esp + 0x90]
add eax, ebx
sub eax, edx
add eax, ecx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x18]
cmp ecx, 0x13
ja case.default.0x4cae3a
mov edx, ecx
jmp dword [edx*4 + 0x4cb82c]
push eax
mov eax, dword [esp + 0x9c]
push ebp
push eax
push esi
push edi
call fcn.004ca6b0
add esp, 0x14
jmp case.default.0x4cae3a
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x98]
push ecx
push ebp
push edx
push esi
push edi
call fcn.004ca910
add esp, 0x14
jmp case.default.0x4cae3a
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x98]
test eax, eax
mov ebx, edi
jle case.default.0x4cae3a
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4caec6
mov edi, dword [esp + 0x20]
xor ecx, ecx
mov cl, byte [esi + 3]
xor eax, eax
mov al, byte [edi]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
inc edi
mov byte [esp + 0x38], dl
mov dword [esp + 0x20], edi
jmp 0x4caecd
mov dl, byte [esi + 3]
mov byte [esp + 0x38], dl
test dl, dl
jne 0x4caedf
mov ecx, dword [esp + 0x14]
add ebx, ecx
add esi, 4
jmp 0x4cafc3
mov eax, dword [esp + 0x38]
mov ecx, 0xff
and eax, 0xff
mov dword [esp + 0x24], 3
sub ecx, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x44], ecx
xor ecx, ecx
cmp ebp, 1
mov cl, byte [ebx]
jne 0x4caf2f
xor edx, edx
mov eax, 0x80808081
mov dl, byte [esi]
mov ebp, edx
imul ebp, ecx
imul ebp
mov eax, edx
add eax, ebp
mov ebp, dword [esp + 0xac]
sar eax, 7
mov edx, eax
shr edx, 0x1f
add eax, edx
jmp 0x4caf87
cmp ebp, 2
jne 0x4caf61
xor eax, eax
mov ebp, ecx
mov al, byte [esi]
mov edi, eax
mov eax, 0x80808081
imul ebp, edi
imul ebp
add edx, ebp
mov ebp, dword [esp + 0xac]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
sub eax, edx
add eax, edi
jmp 0x4caf87
cmp ebp, 3
jne 0x4caf72
xor eax, eax
mov al, byte [esi]
cmp eax, ecx
jl 0x4caf87
mov eax, ecx
jmp 0x4caf87
cmp ebp, 4
jne 0x4caf83
xor eax, eax
mov al, byte [esi]
cmp eax, ecx
jg 0x4caf87
mov eax, ecx
jmp 0x4caf87
xor eax, eax
mov al, byte [esi]
imul ecx, dword [esp + 0x44]
imul eax, dword [esp + 0x4c]
add ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov eax, dword [esp + 0x24]
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov byte [ebx], dl
inc ebx
inc esi
dec eax
mov dword [esp + 0x24], eax
jne 0x4caeff
mov edx, dword [esp + 0x14]
lea eax, [edx - 3]
add ebx, eax
inc esi
mov eax, dword [esp + 0x3c]
dec eax
mov dword [esp + 0x3c], eax
jne 0x4cae90
jmp case.default.0x4cae3a
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
add eax, 0xfffffffd
add ecx, 0xfffffffd
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x98]
test eax, eax
mov ebx, esi
mov dword [esp + 0x44], ecx
jle case.default.0x4cae3a
mov dword [esp + 0x24], eax
mov dword [esp + 0x3c], 3
xor edx, edx
xor ecx, ecx
mov dl, byte [edi]
mov cl, byte [ebx]
cmp ebp, 1
mov esi, edx
jne 0x4cb033
imul ecx, esi
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov ecx, edx
jmp 0x4cb073
cmp ebp, 2
jne 0x4cb05d
mov ebp, ecx
mov eax, 0x80808081
imul ebp, esi
imul ebp
add edx, ebp
mov ebp, dword [esp + 0xac]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
sub ecx, edx
add ecx, esi
jmp 0x4cb073
cmp ebp, 3
jne 0x4cb068
cmp ecx, esi
jl 0x4cb073
jmp 0x4cb071
cmp ebp, 4
jne 0x4cb073
cmp ecx, esi
jg 0x4cb073
mov ecx, esi
mov eax, dword [esp + 0x3c]
mov byte [edi], cl
inc edi
inc ebx
dec eax
mov dword [esp + 0x3c], eax
jne 0x4cb00a
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
add edi, edx
add ebx, ecx
dec eax
mov dword [esp + 0x24], eax
jne 0x4cb002
jmp case.default.0x4cae3a
mov eax, dword [esp + 0x98]
test eax, eax
jle case.default.0x4cae3a
mov ecx, dword [esp + 0x10]
cmp ecx, 4
jne 0x4cb0c4
mov edx, dword [esi]
or edx, 0xff000000
jmp 0x4cb0e2
xor edx, edx
xor ebx, ebx
mov dl, byte [esi + 2]
mov bl, byte [esi + 1]
or edx, 0xffffff00
shl edx, 8
or edx, ebx
xor ebx, ebx
mov bl, byte [esi]
shl edx, 8
or edx, ebx
mov dword [edi], edx
add edi, 4
add esi, ecx
dec eax
jne 0x4cb0b5
jmp case.default.0x4cae3a
mov ebx, eax
mov eax, dword [esp + 0x98]
test eax, eax
mov dword [esp + 0x24], ebx
jle case.default.0x4cae3a
mov dword [esp + 0x20], eax
test ebx, ebx
je 0x4cb138
xor ecx, ecx
xor eax, eax
mov cl, byte [esi + 3]
mov al, byte [ebx]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
inc ebx
mov byte [esp + 0x40], dl
mov dword [esp + 0x24], ebx
jmp 0x4cb13f
mov dl, byte [esi + 3]
mov byte [esp + 0x40], dl
cmp dl, 0xff
jne 0x4cb166
mov dl, byte [esi]
mov byte [edi], dl
mov al, byte [esi + 1]
inc edi
mov edx, dword [esp + 0x14]
inc esi
mov byte [edi], al
inc edi
mov cl, byte [esi + 1]
inc esi
lea eax, [edx - 3]
mov byte [edi], cl
add esi, 2
lea edi, [edi + eax + 1]
jmp 0x4cb1d5
test dl, dl
jne 0x4cb175
mov ecx, dword [esp + 0x14]
add edi, ecx
add esi, 4
jmp 0x4cb1d5
mov ebp, dword [esp + 0x40]
mov ebx, 0xff
and ebp, 0xff
mov dword [esp + 0x3c], 3
sub ebx, ebp
xor ecx, ecx
xor eax, eax
mov cl, byte [edi]
mov al, byte [esi]
imul ecx, ebx
imul eax, ebp
add ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov eax, dword [esp + 0x3c]
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov byte [edi], dl
inc edi
inc esi
dec eax
mov dword [esp + 0x3c], eax
jne 0x4cb18e
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0xac]
lea eax, [edx - 3]
add edi, eax
inc esi
mov eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x20], eax
jne 0x4cb10a
jmp case.default.0x4cae3a
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
cmp ecx, eax
jne 0x4cb210
imul ecx, dword [esp + 0x98]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.default.0x4cae3a
mov eax, dword [esp + 0x98]
test eax, eax
jle case.default.0x4cae3a
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
add edi, 2
add esi, 2
mov bl, byte [esi - 2]
mov byte [edi - 2], bl
mov bl, byte [esi - 1]
mov byte [edi - 1], bl
mov bl, byte [esi]
mov byte [edi], bl
add edi, ecx
add esi, edx
dec eax
jne 0x4cb22d
jmp case.default.0x4cae3a
mov ecx, dword [esp + 0x10]
mov ebp, esi
add ecx, 0xfffffffd
mov esi, edi
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x98]
test ecx, ecx
jle 0x4cb410
mov dword [esp + 0x44], ecx
mov bl, byte [esi + 3]
xor ecx, ecx
mov cl, byte [eax]
inc eax
test bl, bl
mov dword [esp + 0x60], eax
mov byte [esp + 0x50], bl
jne 0x4cb2a2
mov dl, byte [ebp]
mov byte [esi], dl
mov cl, byte [ebp + 1]
inc esi
inc ebp
mov byte [esi], cl
mov dl, byte [ebp + 1]
mov ecx, dword [esp + 0x20]
inc esi
inc ebp
mov byte [esi], dl
add esi, 2
lea ebp, [ecx + ebp + 1]
jmp 0x4cb401
test ecx, ecx
jne 0x4cb2b4
mov ecx, dword [esp + 0x10]
add esi, 4
add ebp, ecx
jmp 0x4cb401
mov eax, dword [esp + 0x50]
mov edi, ecx
and eax, 0xff
mov dword [esp + 0x24], 3
imul edi, eax
mov dword [esp + 0x3c], eax
mov eax, 0x80808081
imul edi
add edx, edi
mov edi, dword [esp + 0x3c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
sub bl, dl
add bl, cl
shl eax, 8
mov byte [esp + 0x54], bl
sub eax, ecx
mov ecx, dword [esp + 0x54]
mov byte [esi + 3], bl
cdq
and ecx, 0xff
mov ebx, dword [esp + 0xac]
idiv ecx
mov ecx, 0xff
sub ecx, edi
mov dword [esp + 0x4c], ecx
mov ecx, 0xff
sub ecx, eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
xor edx, edx
cmp ebx, 1
mov dl, byte [ebp]
mov edi, edx
jne 0x4cb34f
xor ecx, ecx
mov eax, 0x80808081
mov cl, byte [esi]
imul ecx, edi
imul ecx
mov eax, edx
add eax, ecx
sar eax, 7
mov ecx, eax
shr ecx, 0x1f
add eax, ecx
jmp 0x4cb39d
cmp ebx, 2
jne 0x4cb37f
xor ebx, ebx
mov ecx, edi
mov bl, byte [esi]
mov eax, 0x80808081
imul ecx, ebx
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, edi
sub eax, edx
add eax, ebx
mov ebx, dword [esp + 0xac]
jmp 0x4cb39d
cmp ebx, 3
jne 0x4cb38e
xor eax, eax
mov al, byte [esi]
cmp edi, eax
jl 0x4cb39b
jmp 0x4cb39d
cmp ebx, 4
jne 0x4cb39b
xor eax, eax
mov al, byte [esi]
cmp edi, eax
jle 0x4cb39d
mov eax, edi
mov ecx, dword [esp + 0x4c]
imul eax, dword [esp + 0x3c]
imul ecx, edi
add ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov eax, 0x80808081
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, edx
xor edx, edx
mov dl, byte [esi]
imul ecx, dword [esp + 0x58]
imul edx, dword [esp + 0x5c]
add ecx, edx
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x24]
mov byte [esi], dl
inc esi
inc ebp
dec eax
mov dword [esp + 0x24], eax
jne 0x4cb325
mov eax, dword [esp + 0x20]
inc esi
add ebp, eax
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x44]
dec ecx
mov dword [esp + 0x44], ecx
jne 0x4cb26b
mov ebp, dword [esp + 0xac]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x9c]
inc eax
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x4cada1
mov edi, dword [esp + 0xa0]
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4cb44a
test edi, edi
je 0x4cb44a
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
cmp dword [esp + 0x18], 0x13
jne 0x4cb462
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4cb462
push eax
call fcn.0048b400
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret 0x24
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
add ecx, 0xfffffffd
add edx, 0xfffffffd
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x98]
test ecx, ecx
mov ebx, esi
mov dword [esp + 0x4c], edx
jle case.default.0x4cae3a
mov dword [esp + 0x3c], ecx
mov cl, byte [eax]
inc eax
test cl, cl
mov byte [esp + 0x64], cl
mov dword [esp + 0x24], eax
jne 0x4cb4b3
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
add edi, edx
add ebx, ecx
jmp 0x4cb58d
mov eax, dword [esp + 0x64]
mov ecx, 0xff
and eax, 0xff
mov dword [esp + 0x44], 3
sub ecx, eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
xor eax, eax
xor ecx, ecx
mov al, byte [ebx]
mov cl, byte [edi]
mov ebp, eax
mov eax, dword [esp + 0xac]
cmp eax, 1
jne 0x4cb505
mov esi, ecx
mov eax, 0x80808081
imul esi, ebp
imul esi
mov eax, edx
add eax, esi
sar eax, 7
mov edx, eax
shr edx, 0x1f
add eax, edx
jmp 0x4cb544
cmp eax, 2
jne 0x4cb52a
mov esi, ecx
mov eax, 0x80808081
imul esi, ebp
imul esi
add edx, esi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
sub eax, edx
add eax, ebp
jmp 0x4cb544
cmp eax, 3
jne 0x4cb537
cmp ebp, ecx
jl 0x4cb542
mov eax, ecx
jmp 0x4cb544
cmp eax, 4
jne 0x4cb542
cmp ebp, ecx
mov eax, ecx
jle 0x4cb544
mov eax, ebp
imul ecx, dword [esp + 0x60]
imul eax, dword [esp + 0x5c]
add ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov eax, dword [esp + 0x44]
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov byte [edi], dl
inc edi
inc ebx
dec eax
mov dword [esp + 0x44], eax
jne 0x4cb4d3
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0xac]
add edi, ecx
add ebx, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
dec ecx
mov dword [esp + 0x3c], ecx
jne 0x4cb493
jmp case.default.0x4cae3a
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x98]
add edx, 0xfffffffd
mov dword [esp + 0x5c], eax
mov dword [esp + 0x3c], edx
xor edx, edx
test eax, eax
mov ebp, esi
mov ecx, edi
mov dword [esp + 0x24], edx
jle 0x4cb410
mov eax, dword [esp + 0x20]
xor ebx, ebx
mov bl, byte [edx + eax]
cmp ebx, 0xff
jne 0x4cb5fe
mov al, byte [ebp]
mov byte [ecx], al
mov al, byte [ebp + 1]
inc ecx
inc ebp
mov byte [ecx], al
mov al, byte [ebp + 1]
inc ecx
inc ebp
mov byte [ecx], al
mov eax, dword [esp + 0x3c]
inc ecx
lea ebp, [eax + ebp + 1]
mov byte [ecx], bl
inc ecx
jmp 0x4cb6a7
test ebx, ebx
jne 0x4cb610
mov eax, dword [esp + 0x10]
add ecx, 4
add ebp, eax
jmp 0x4cb6a7
xor eax, eax
mov edi, 0xff
mov al, byte [ecx + 3]
mov dword [esp + 0x44], 3
mov esi, eax
mov dword [esp + 0x60], eax
imul esi, ebx
mov eax, 0x80808081
imul esi
add edx, esi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov al, bl
sub al, dl
mov dl, byte [esp + 0x60]
add al, dl
mov byte [esp + 0x68], al
mov byte [ecx + 3], al
mov esi, dword [esp + 0x68]
mov eax, ebx
shl eax, 8
sub eax, ebx
and esi, 0xff
cdq
idiv esi
mov ebx, eax
sub edi, ebx
xor edx, edx
xor eax, eax
mov dl, byte [ecx]
mov al, byte [ebp]
mov esi, edx
imul eax, ebx
imul esi, edi
add esi, eax
mov eax, 0x80808081
imul esi
add edx, esi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x44]
mov byte [ecx], dl
inc ecx
inc ebp
dec eax
mov dword [esp + 0x44], eax
jne 0x4cb667
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
inc ecx
add ebp, eax
mov eax, dword [esp + 0x5c]
inc edx
cmp edx, eax
mov dword [esp + 0x24], edx
jl 0x4cb5c9
jmp 0x4cb410
mov eax, dword [esp + 0x98]
mov ecx, edi
test eax, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x24], 0
jle case.default.0x4cae3a
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
xor ebx, ebx
mov bl, byte [eax + edx]
cmp ebx, 0xff
jne 0x4cb71d
mov dl, byte [esi]
mov byte [ecx], dl
mov dl, byte [esi + 1]
mov byte [ecx + 1], dl
mov dl, byte [esi + 2]
mov byte [ecx + 2], dl
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
add ecx, edi
add esi, edx
mov edx, dword [esp + 0x60]
inc eax
cmp eax, edx
mov dword [esp + 0x24], eax
jl 0x4cb6de
jmp 0x4cb410
test ebx, ebx
je 0x4cb6ff
xor eax, eax
mov ebp, 0xff
mov al, byte [ecx]
xor edx, edx
mov dl, byte [esi]
sub ebp, ebx
mov edi, eax
imul edx, ebx
imul edi, ebp
add edi, edx
mov eax, 0x80808081
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
xor eax, eax
mov byte [ecx], dl
mov al, byte [esi + 1]
inc ecx
xor edx, edx
inc esi
imul eax, ebx
mov dl, byte [ecx]
mov edi, edx
imul edi, ebp
add edi, eax
mov eax, 0x80808081
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
xor eax, eax
mov byte [ecx], dl
mov al, byte [esi + 1]
inc ecx
xor edx, edx
inc esi
imul eax, ebx
mov dl, byte [ecx]
mov edi, edx
imul edi, ebp
add edi, eax
mov eax, 0x80808081
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x10]
mov byte [ecx], dl
mov edx, dword [esp + 0x14]
lea esi, [esi + eax - 2]
mov eax, dword [esp + 0x24]
lea ecx, [ecx + edx - 2]
jmp 0x4cb70b
mov ecx, dword [esp + 0x98]
push eax
push ecx
push esi
push edi
call fcn.004cb880
add esp, 0x10
jmp case.default.0x4cae3a
mov edx, dword [esp + 0x98]
push eax
push ebp
push edx
push esi
push edi
call fcn.004cb920
add esp, 0x14
jmp case.default.0x4cae3a
mov ecx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x9c]
push ebp
push eax
push ecx
push esi
push edi
call fcn.004cb9f0
add esp, 0x18
jmp case.default.0x4cae3a
mov edx, dword [esp + 0x98]
push eax
mov eax, dword [esp + 0x30]
push ebp
push edx
push eax
push esi
push edi
call fcn.004cbab0
add esp, 0x18
jmp case.default.0x4cae3a