Function at 0x4d3a80
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.004c4af0
mov edx, dword [esp + 0x98]
test edx, edx
je 0x4d4472
mov ebx, dword [esp + 0x9c]
test ebx, ebx
je 0x4d4472
test esi, esi
mov dword [esp + 0x1c], 0
je 0x4d3b65
cmp dword [esi], 0
je 0x4d3b65
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.004d28a0
mov ecx, dword [eax]
mov eax, dword [esp + 0x30]
test eax, eax
mov dword [esp + 0x1c], ecx
je 0x4d3b39
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 0x4d3b39
test ecx, ecx
je 0x4d3b39
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 0x4d3be8
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x4d3be8
mov ecx, dword [edi + 0x10]
test ecx, ecx
jne 0x4d3be8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4d3bc3
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.004d5ec0
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.004d61e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret 0x24
cmp eax, 8
mov dword [esp + 0x48], 0
je 0x4d3c5c
cmp dword [edi + 0xc], 0x18
jge 0x4d3c5c
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.00501850
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 0x4d3d6b
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x4d3cab
mov dword [esp + 0x18], 0x10
jmp 0x4d3da1
cmp eax, 1
jne 0x4d3d58
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x18], 0x13
mov edi, dword [edx + 0x18]
test edi, edi
je 0x4d3d47
push 0x100
call fcn.00492910
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 0x4d3cdf
mov ebx, dword [esp + 0x9c]
mov edi, dword [esp + 0xa0]
jmp 0x4d3da1
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x2c], 0
jmp 0x4d3da1
mov esi, dword [edi + 0x10]
xor ecx, ecx
cmp esi, edx
setne cl
add ecx, 0x11
mov dword [esp + 0x18], ecx
jmp 0x4d3da1
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 0x4d4446
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 0x4d3e3b
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.0x4d3e4a
mov edx, ecx
jmp dword [edx*4 + 0x4d483c]
push eax
mov eax, dword [esp + 0x9c]
push ebp
push eax
push esi
push edi
call fcn.004d36c0
add esp, 0x14
jmp case.default.0x4d3e4a
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x98]
push ecx
push ebp
push edx
push esi
push edi
call fcn.004d3920
add esp, 0x14
jmp case.default.0x4d3e4a
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x98]
test eax, eax
mov ebx, edi
jle case.default.0x4d3e4a
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4d3ed6
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 0x4d3edd
mov dl, byte [esi + 3]
mov byte [esp + 0x38], dl
test dl, dl
jne 0x4d3eef
mov ecx, dword [esp + 0x14]
add ebx, ecx
add esi, 4
jmp 0x4d3fd3
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 0x4d3f3f
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 0x4d3f97
cmp ebp, 2
jne 0x4d3f71
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 0x4d3f97
cmp ebp, 3
jne 0x4d3f82
xor eax, eax
mov al, byte [esi]
cmp eax, ecx
jl 0x4d3f97
mov eax, ecx
jmp 0x4d3f97
cmp ebp, 4
jne 0x4d3f93
xor eax, eax
mov al, byte [esi]
cmp eax, ecx
jg 0x4d3f97
mov eax, ecx
jmp 0x4d3f97
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 0x4d3f0f
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 0x4d3ea0
jmp case.default.0x4d3e4a
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.0x4d3e4a
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 0x4d4043
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 0x4d4083
cmp ebp, 2
jne 0x4d406d
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 0x4d4083
cmp ebp, 3
jne 0x4d4078
cmp ecx, esi
jl 0x4d4083
jmp 0x4d4081
cmp ebp, 4
jne 0x4d4083
cmp ecx, esi
jg 0x4d4083
mov ecx, esi
mov eax, dword [esp + 0x3c]
mov byte [edi], cl
inc edi
inc ebx
dec eax
mov dword [esp + 0x3c], eax
jne 0x4d401a
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 0x4d4012
jmp case.default.0x4d3e4a
mov eax, dword [esp + 0x98]
test eax, eax
jle case.default.0x4d3e4a
mov ecx, dword [esp + 0x10]
cmp ecx, 4
jne 0x4d40d4
mov edx, dword [esi]
or edx, 0xff000000
jmp 0x4d40f2
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 0x4d40c5
jmp case.default.0x4d3e4a
mov ebx, eax
mov eax, dword [esp + 0x98]
test eax, eax
mov dword [esp + 0x24], ebx
jle case.default.0x4d3e4a
mov dword [esp + 0x20], eax
test ebx, ebx
je 0x4d4148
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 0x4d414f
mov dl, byte [esi + 3]
mov byte [esp + 0x40], dl
cmp dl, 0xff
jne 0x4d4176
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 0x4d41e5
test dl, dl
jne 0x4d4185
mov ecx, dword [esp + 0x14]
add edi, ecx
add esi, 4
jmp 0x4d41e5
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 0x4d419e
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 0x4d411a
jmp case.default.0x4d3e4a
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
cmp ecx, eax
jne 0x4d4220
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.0x4d3e4a
mov eax, dword [esp + 0x98]
test eax, eax
jle case.default.0x4d3e4a
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 0x4d423d
jmp case.default.0x4d3e4a
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 0x4d4420
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 0x4d42b2
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 0x4d4411
test ecx, ecx
jne 0x4d42c4
mov ecx, dword [esp + 0x10]
add esi, 4
add ebp, ecx
jmp 0x4d4411
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 0x4d435f
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 0x4d43ad
cmp ebx, 2
jne 0x4d438f
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 0x4d43ad
cmp ebx, 3
jne 0x4d439e
xor eax, eax
mov al, byte [esi]
cmp edi, eax
jl 0x4d43ab
jmp 0x4d43ad
cmp ebx, 4
jne 0x4d43ab
xor eax, eax
mov al, byte [esi]
cmp edi, eax
jle 0x4d43ad
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 0x4d4335
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 0x4d427b
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 0x4d3db1
mov edi, dword [esp + 0xa0]
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4d445a
test edi, edi
je 0x4d445a
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
cmp dword [esp + 0x18], 0x13
jne 0x4d4472
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4d4472
push eax
call fcn.00492960
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.0x4d3e4a
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 0x4d44c3
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
add edi, edx
add ebx, ecx
jmp 0x4d459d
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 0x4d4515
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 0x4d4554
cmp eax, 2
jne 0x4d453a
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 0x4d4554
cmp eax, 3
jne 0x4d4547
cmp ebp, ecx
jl 0x4d4552
mov eax, ecx
jmp 0x4d4554
cmp eax, 4
jne 0x4d4552
cmp ebp, ecx
mov eax, ecx
jle 0x4d4554
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 0x4d44e3
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 0x4d44a3
jmp case.default.0x4d3e4a
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 0x4d4420
mov eax, dword [esp + 0x20]
xor ebx, ebx
mov bl, byte [edx + eax]
cmp ebx, 0xff
jne 0x4d460e
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 0x4d46b7
test ebx, ebx
jne 0x4d4620
mov eax, dword [esp + 0x10]
add ecx, 4
add ebp, eax
jmp 0x4d46b7
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 0x4d4677
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 0x4d45d9
jmp 0x4d4420
mov eax, dword [esp + 0x98]
mov ecx, edi
test eax, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x24], 0
jle case.default.0x4d3e4a
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
xor ebx, ebx
mov bl, byte [eax + edx]
cmp ebx, 0xff
jne 0x4d472d
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 0x4d46ee
jmp 0x4d4420
test ebx, ebx
je 0x4d470f
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 0x4d471b
mov ecx, dword [esp + 0x98]
push eax
push ecx
push esi
push edi
call fcn.004d4890
add esp, 0x10
jmp case.default.0x4d3e4a
mov edx, dword [esp + 0x98]
push eax
push ebp
push edx
push esi
push edi
call fcn.004d4930
add esp, 0x14
jmp case.default.0x4d3e4a
mov ecx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x9c]
push ebp
push eax
push ecx
push esi
push edi
call fcn.004d4a00
add esp, 0x18
jmp case.default.0x4d3e4a
mov edx, dword [esp + 0x98]
push eax
mov eax, dword [esp + 0x30]
push ebp
push edx
push eax
push esi
push edi
call fcn.004d4ac0
add esp, 0x18
jmp case.default.0x4d3e4a