Function at 0x4d4e90
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.004c5e00
mov edx, dword [esp + 0x98]
test edx, edx
je 0x4d5882
mov ebx, dword [esp + 0x9c]
test ebx, ebx
je 0x4d5882
test esi, esi
mov dword [esp + 0x1c], 0
je 0x4d4f75
cmp dword [esi], 0
je 0x4d4f75
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.004d3c70
mov ecx, dword [eax]
mov eax, dword [esp + 0x30]
test eax, eax
mov dword [esp + 0x1c], ecx
je 0x4d4f49
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 0x4d4f49
test ecx, ecx
je 0x4d4f49
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 0x4d4ff8
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x4d4ff8
mov ecx, dword [edi + 0x10]
test ecx, ecx
jne 0x4d4ff8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4d4fd3
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.004d72d0
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.004d75f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret 0x24
cmp eax, 8
mov dword [esp + 0x48], 0
je 0x4d506c
cmp dword [edi + 0xc], 0x18
jge 0x4d506c
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.00502f30
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 0x4d517b
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x4d50bb
mov dword [esp + 0x18], 0x10
jmp 0x4d51b1
cmp eax, 1
jne 0x4d5168
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x18], 0x13
mov edi, dword [edx + 0x18]
test edi, edi
je 0x4d5157
push 0x100
call fcn.00493a20
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 0x4d50ef
mov ebx, dword [esp + 0x9c]
mov edi, dword [esp + 0xa0]
jmp 0x4d51b1
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x2c], 0
jmp 0x4d51b1
mov esi, dword [edi + 0x10]
xor ecx, ecx
cmp esi, edx
setne cl
add ecx, 0x11
mov dword [esp + 0x18], ecx
jmp 0x4d51b1
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 0x4d5856
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 0x4d524b
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.0x4d525a
mov edx, ecx
jmp dword [edx*4 + 0x4d5c4c]
push eax
mov eax, dword [esp + 0x9c]
push ebp
push eax
push esi
push edi
call fcn.004d4ad0
add esp, 0x14
jmp case.default.0x4d525a
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x98]
push ecx
push ebp
push edx
push esi
push edi
call fcn.004d4d30
add esp, 0x14
jmp case.default.0x4d525a
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x98]
test eax, eax
mov ebx, edi
jle case.default.0x4d525a
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4d52e6
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 0x4d52ed
mov dl, byte [esi + 3]
mov byte [esp + 0x38], dl
test dl, dl
jne 0x4d52ff
mov ecx, dword [esp + 0x14]
add ebx, ecx
add esi, 4
jmp 0x4d53e3
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 0x4d534f
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 0x4d53a7
cmp ebp, 2
jne 0x4d5381
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 0x4d53a7
cmp ebp, 3
jne 0x4d5392
xor eax, eax
mov al, byte [esi]
cmp eax, ecx
jl 0x4d53a7
mov eax, ecx
jmp 0x4d53a7
cmp ebp, 4
jne 0x4d53a3
xor eax, eax
mov al, byte [esi]
cmp eax, ecx
jg 0x4d53a7
mov eax, ecx
jmp 0x4d53a7
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 0x4d531f
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 0x4d52b0
jmp case.default.0x4d525a
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.0x4d525a
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 0x4d5453
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 0x4d5493
cmp ebp, 2
jne 0x4d547d
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 0x4d5493
cmp ebp, 3
jne 0x4d5488
cmp ecx, esi
jl 0x4d5493
jmp 0x4d5491
cmp ebp, 4
jne 0x4d5493
cmp ecx, esi
jg 0x4d5493
mov ecx, esi
mov eax, dword [esp + 0x3c]
mov byte [edi], cl
inc edi
inc ebx
dec eax
mov dword [esp + 0x3c], eax
jne 0x4d542a
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 0x4d5422
jmp case.default.0x4d525a
mov eax, dword [esp + 0x98]
test eax, eax
jle case.default.0x4d525a
mov ecx, dword [esp + 0x10]
cmp ecx, 4
jne 0x4d54e4
mov edx, dword [esi]
or edx, 0xff000000
jmp 0x4d5502
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 0x4d54d5
jmp case.default.0x4d525a
mov ebx, eax
mov eax, dword [esp + 0x98]
test eax, eax
mov dword [esp + 0x24], ebx
jle case.default.0x4d525a
mov dword [esp + 0x20], eax
test ebx, ebx
je 0x4d5558
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 0x4d555f
mov dl, byte [esi + 3]
mov byte [esp + 0x40], dl
cmp dl, 0xff
jne 0x4d5586
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 0x4d55f5
test dl, dl
jne 0x4d5595
mov ecx, dword [esp + 0x14]
add edi, ecx
add esi, 4
jmp 0x4d55f5
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 0x4d55ae
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 0x4d552a
jmp case.default.0x4d525a
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
cmp ecx, eax
jne 0x4d5630
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.0x4d525a
mov eax, dword [esp + 0x98]
test eax, eax
jle case.default.0x4d525a
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 0x4d564d
jmp case.default.0x4d525a
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 0x4d5830
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 0x4d56c2
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 0x4d5821
test ecx, ecx
jne 0x4d56d4
mov ecx, dword [esp + 0x10]
add esi, 4
add ebp, ecx
jmp 0x4d5821
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 0x4d576f
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 0x4d57bd
cmp ebx, 2
jne 0x4d579f
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 0x4d57bd
cmp ebx, 3
jne 0x4d57ae
xor eax, eax
mov al, byte [esi]
cmp edi, eax
jl 0x4d57bb
jmp 0x4d57bd
cmp ebx, 4
jne 0x4d57bb
xor eax, eax
mov al, byte [esi]
cmp edi, eax
jle 0x4d57bd
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 0x4d5745
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 0x4d568b
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 0x4d51c1
mov edi, dword [esp + 0xa0]
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4d586a
test edi, edi
je 0x4d586a
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
cmp dword [esp + 0x18], 0x13
jne 0x4d5882
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4d5882
push eax
call fcn.00493a70
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.0x4d525a
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 0x4d58d3
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
add edi, edx
add ebx, ecx
jmp 0x4d59ad
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 0x4d5925
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 0x4d5964
cmp eax, 2
jne 0x4d594a
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 0x4d5964
cmp eax, 3
jne 0x4d5957
cmp ebp, ecx
jl 0x4d5962
mov eax, ecx
jmp 0x4d5964
cmp eax, 4
jne 0x4d5962
cmp ebp, ecx
mov eax, ecx
jle 0x4d5964
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 0x4d58f3
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 0x4d58b3
jmp case.default.0x4d525a
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 0x4d5830
mov eax, dword [esp + 0x20]
xor ebx, ebx
mov bl, byte [edx + eax]
cmp ebx, 0xff
jne 0x4d5a1e
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 0x4d5ac7
test ebx, ebx
jne 0x4d5a30
mov eax, dword [esp + 0x10]
add ecx, 4
add ebp, eax
jmp 0x4d5ac7
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 0x4d5a87
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 0x4d59e9
jmp 0x4d5830
mov eax, dword [esp + 0x98]
mov ecx, edi
test eax, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x24], 0
jle case.default.0x4d525a
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
xor ebx, ebx
mov bl, byte [eax + edx]
cmp ebx, 0xff
jne 0x4d5b3d
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 0x4d5afe
jmp 0x4d5830
test ebx, ebx
je 0x4d5b1f
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 0x4d5b2b
mov ecx, dword [esp + 0x98]
push eax
push ecx
push esi
push edi
call fcn.004d5ca0
add esp, 0x10
jmp case.default.0x4d525a
mov edx, dword [esp + 0x98]
push eax
push ebp
push edx
push esi
push edi
call fcn.004d5d40
add esp, 0x14
jmp case.default.0x4d525a
mov ecx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x9c]
push ebp
push eax
push ecx
push esi
push edi
call fcn.004d5e10
add esp, 0x18
jmp case.default.0x4d525a
mov edx, dword [esp + 0x98]
push eax
mov eax, dword [esp + 0x30]
push ebp
push edx
push eax
push esi
push edi
call fcn.004d5ed0
add esp, 0x18
jmp case.default.0x4d525a