Function at 0x47d4d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x48
mov edx, dword [esp + 0x50]
push ebx
mov ebx, dword [esp + 0x5c]
push ebp
push esi
mov esi, dword [esp + 0x60]
push edi
mov edi, ecx
mov ecx, dword [esp + 0x5c]
sub ebx, edx
sub esi, ecx
mov dword [esp + 0x10], ebx
cmp esi, 1
mov eax, 1
jl 0x47d4fd
mov eax, esi
push 8
lea ecx, [edi + 0x2b8]
push 1
push eax
mov dword [esp + 0x3c], ecx
call fcn.004a16c0
cmp ebx, 1
mov eax, 1
jl 0x47d51d
mov eax, ebx
push 8
lea ecx, [edi + 0x2fc]
push eax
push 1
mov dword [esp + 0x40], ecx
call fcn.004a16c0
push 8
lea ecx, [edi + 0x274]
push ebx
push esi
mov dword [esp + 0x20], ecx
call fcn.004a16c0
mov eax, dword [edi + 0x264]
mov ecx, dword [edi + 0x26c]
mov dword [esp + 0x50], eax
mov eax, dword [edi + 0x268]
mov edx, eax
mov edi, ecx
and edx, 0xff
and edi, 0xff
mov dword [esp + 0x40], edx
xor edx, edx
mov dl, ch
xor ebx, ebx
mov ebp, edx
xor edx, edx
mov dl, ah
and ebp, 0xff
shr eax, 0x10
shr ecx, 0x10
and eax, 0xff
and ecx, 0xff
mov dword [esp + 0x38], eax
mov eax, ecx
neg eax
mov dword [esp + 0x4c], eax
mov eax, ebp
neg eax
mov dword [esp + 0x48], eax
mov eax, edi
and edx, 0xff
mov dword [esp + 0x5c], ebx
neg eax
shl ecx, 7
shl ebp, 7
shl edi, 7
mov dword [esp + 0x3c], edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x28]
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x24]
mov edi, eax
mov eax, dword [esp + 0x1c]
add eax, edx
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x2c]
mov ebp, eax
lea eax, [ecx + edx]
mov ecx, dword [esp + 0x14]
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
mov eax, dword [esp + 0x5c]
sar ebx, 7
sar ebp, 7
sar edi, 7
push ebx
push ebp
push edi
push eax
call fcn.004a19c0
mov ecx, dword [esp + 0x5c]
push ebx
push ebp
push edi
push ecx
mov ecx, dword [esp + 0x40]
call fcn.004a19c0
mov ecx, dword [esp + 0x34]
push ebx
push ebp
push edi
mov edi, dword [esp + 0x68]
push edi
call fcn.004a19c0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x44]
add ebx, edx
mov edx, dword [esp + 0x48]
add eax, ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x4c]
add ebp, edx
mov edx, dword [esp + 0x2c]
inc edi
add ebx, eax
add edx, ecx
cmp edi, 0x81
mov dword [esp + 0x5c], edi
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edx
jl 0x47d5dc
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x38]
xor edx, edx
mov ecx, eax
mov dl, ah
and ecx, 0xff
shr eax, 0x10
and eax, 0xff
and edx, 0xff
mov dword [esp + 0x54], eax
mov dword [esp + 0x18], eax
mov eax, edi
mov dword [esp + 0x4c], edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x3c]
neg eax
mov dword [esp + 0x38], eax
mov eax, edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x5c], 1
neg eax
mov dword [esp + 0x44], eax
mov eax, ecx
neg eax
mov dword [esp + 0x48], eax
mov eax, edi
shl eax, 7
sub eax, edi
mov dword [esp + 0x1c], eax
mov eax, edx
shl eax, 7
sub eax, edx
mov dword [esp + 0x20], eax
mov eax, ecx
shl eax, 7
sub eax, ecx
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
add eax, edx
mov ecx, dword [esp + 0x20]
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x28]
mov edi, eax
lea eax, [ecx + edx]
mov ecx, dword [esp + 0x18]
cdq
and edx, 0x7f
add eax, edx
mov ebp, eax
mov eax, dword [esp + 0x1c]
add eax, ecx
mov ecx, dword [esp + 0x14]
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
mov al, byte [esp + 0x5c]
sar ebx, 7
sar ebp, 7
sar edi, 7
push ebx
add al, 0x7f
push ebp
push edi
push eax
mov byte [esp + 0x50], al
call fcn.004a19c0
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x30]
push ebx
push ebp
push edi
push edx
call fcn.004a19c0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
push ebx
push ebp
push edi
push eax
call fcn.004a19c0
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x2c]
mov edx, dword [esp + 0x4c]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x5c]
add ebx, ecx
mov ecx, dword [esp + 0x48]
add edi, edx
mov edx, dword [esp + 0x24]
add edx, ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x18]
add ebp, edx
mov edx, dword [esp + 0x54]
inc eax
add ebx, ecx
add edi, edx
cmp eax, 0x81
mov dword [esp + 0x5c], eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], edi
jl 0x47d737
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
mov ebp, dword [esp + 0x14]
and eax, 0xff
push eax
push ecx
mov ecx, ebp
call fcn.004a1840
mov edi, dword [esp + 0x30]
mov ecx, edi
call fcn.004a17f0
mov ecx, edi
mov ebx, eax
call fcn.004a1810
xor ecx, ecx
test eax, eax
jle 0x47d865
mov edx, ecx
and edx, 0x80000001
jns 0x47d85b
dec edx
or edx, 0xfffffffe
inc edx
neg dl
mov byte [ebx + ecx], dl
inc ecx
cmp ecx, eax
jl 0x47d84c
mov ebx, dword [esp + 0x34]
mov ecx, ebx
call fcn.004a17f0
mov ecx, ebx
mov edi, eax
call fcn.004a1820
xor ecx, ecx
test eax, eax
jle 0x47d89a
mov edx, ecx
and edx, 0x80000001
jns 0x47d88e
dec edx
or edx, 0xfffffffe
inc edx
neg dl
mov byte [edi], dl
add edi, 4
inc ecx
cmp ecx, eax
jl 0x47d87f
mov ecx, ebp
call fcn.004a1830
mov ecx, ebp
mov dword [esp + 0x78], eax
call fcn.004a17f0
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x20], eax
and ecx, 0xff
mov edi, eax
mov dword [esp + 0x18], ecx
mov ebx, 1
lea eax, [ecx + ecx]
cmp eax, 1
jl 0x47d8cf
mov ebx, eax
mov eax, 0x7fff
cdq
idiv ebx
mov edx, dword [esp + 0x6c]
add edx, 0xfffffff9
mov dword [esp + 0x74], eax
mov eax, 0xff
sub eax, ecx
cmp edx, 8
mov dword [esp + 0x2c], eax
ja case.default.0x47d8f6
jmp dword [edx*4 + 0x47e154]
push 0
mov ecx, ebp
call fcn.004a1930
mov eax, 0x7fff
mov dword [esp + 0x40], 0xc8
cdq
idiv esi
mov dword [esp + 0x54], eax
mov eax, 0x7fff
cdq
idiv dword [esp + 0x10]
mov dword [esp + 0x50], eax
mov edi, dword [sym.imp.MSVCRT.dll_rand]
call edi
cdq
idiv dword [esp + 0x54]
mov dword [esp + 0x1c], eax
call edi
cdq
idiv dword [esp + 0x50]
mov ebx, dword [esp + 0x10]
cmp esi, ebx
mov ebp, eax
jge 0x47d94c
mov ebx, esi
mov edi, dword [sym.imp.MSVCRT.dll_rand]
call edi
mov ecx, eax
mov eax, 0x7fff
cdq
idiv ebx
mov ebx, eax
mov eax, ecx
cdq
idiv ebx
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
call edi
mov ecx, eax
mov eax, 0xa00a00a1
imul ecx
add edx, ecx
xor edi, edi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add edx, eax
test ebx, ebx
mov dword [esp + 0x6c], edx
jle 0x47da0c
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x70], ebp
sub ecx, ebp
mov dword [esp + 0x5c], ecx
mov edx, dword [esp + 0x70]
lea eax, [ecx + edx]
test eax, eax
jle 0x47d9cb
mov edx, dword [esp + 0x10]
lea eax, [edi + ebp]
cmp eax, edx
jge 0x47d9cb
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x18]
sub edx, edi
push eax
push edx
call fcn.004a1970
mov ecx, dword [esp + 0x5c]
lea eax, [ecx + ebp]
add eax, edi
cmp eax, esi
jge 0x47d9fe
mov eax, dword [esp + 0x70]
test eax, eax
jle 0x47d9fe
mov ecx, dword [esp + 0x6c]
mov eax, edi
push ecx
mov ecx, dword [esp + 0x20]
mov edx, ebp
sub eax, ecx
mov ecx, dword [esp + 0x18]
sub edx, edi
add eax, esi
push edx
push eax
call fcn.004a1970
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x70]
inc edi
dec edx
cmp edi, ebx
mov dword [esp + 0x70], edx
jl 0x47d99b
mov eax, dword [esp + 0x40]
dec eax
mov dword [esp + 0x40], eax
jne 0x47d928
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
sub eax, edx
mov ecx, dword [esp + 0x10]
sub eax, 0x28
mov ebp, dword [esp + 0x20]
cdq
sub eax, edx
sar eax, 1
test ecx, ecx
mov dword [esp + 0x14], eax
jle case.default.0x47d8f6
mov dword [esp + 0x70], 0
mov dword [esp + 0x5c], ecx
xor edi, edi
test esi, esi
jle 0x47daa4
mov eax, dword [esp + 0x70]
mov ebx, dword [esp + 0x14]
cdq
idiv dword [esp + 0x10]
mov dword [esp + 0x6c], eax
mov eax, ebx
neg eax
imul ebx, esi
mov dword [esp + 0x54], eax
mov eax, ebx
mov cl, byte [esp + 0x6c]
cdq
idiv esi
mov dl, byte [edi + ebp]
add al, cl
add dl, al
mov byte [edi + ebp], dl
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov cl, byte [edi + ebp]
add cl, al
mov byte [edi + ebp], cl
mov ecx, dword [esp + 0x54]
inc edi
add ebx, ecx
cmp edi, esi
jl 0x47da6f
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x78]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x5c]
add ebp, edi
add edx, eax
dec ecx
mov dword [esp + 0x70], edx
mov dword [esp + 0x5c], ecx
jne 0x47da4d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
mov eax, dword [esp + 0x10]
test eax, eax
jle 0x47db7e
mov ecx, dword [esp + 0x18]
mov eax, 0x40
sub eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x54], eax
mov dword [esp + 0x6c], 0
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x6c]
xor ebp, ebp
cdq
idiv dword [esp + 0x10]
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
imul eax, dword [esp + 0x54]
shl eax, 1
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
sar ebx, 7
add ebx, 0x80
test esi, esi
jle 0x47db5b
mov byte [edi + ebp], bl
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x70]
mov dl, byte [edi + ebp]
sub al, cl
add dl, al
mov byte [edi + ebp], dl
inc ebp
cmp ebp, esi
jl 0x47db3a
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x5c]
add edi, edx
add ecx, 0xff
dec eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x5c], eax
jne 0x47daf4
mov eax, 0x2aaaaaab
mov dword [esp + 0x6c], 0x10
imul esi
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 0x10
jg 0x47db9d
mov dword [esp + 0x6c], edx
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov eax, edi
xor ecx, ecx
imul eax, edi
cdq
and edx, 3
mov dword [esp + 0x5c], ecx
add eax, edx
sar eax, 2
cmp edi, ecx
mov dword [esp + 0x14], eax
jle case.default.0x47d8f6
mov eax, edi
mov edi, dword [esp + 0x6c]
cdq
sub eax, edx
mov dword [esp + 0x30], ecx
sar eax, 1
imul edi, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x54], edi
jmp 0x47dbe5
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x30]
mov ebx, ecx
sub edx, edi
sub ebx, eax
xor edi, edi
mov dword [esp + 0x50], edx
test esi, esi
jle 0x47dcab
mov eax, esi
mov dword [esp + 0x34], edi
cdq
sub eax, edx
mov ecx, eax
mov eax, dword [esp + 0x50]
imul eax, ebx
cdq
idiv dword [esp + 0x14]
mov edx, dword [esp + 0x6c]
mov ebx, esi
sar ecx, 1
mov dword [esp + 0x4c], ecx
sub eax, edx
add eax, ecx
mov dword [esp + 0x40], eax
shl ebx, 7
jmp 0x47dc35
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x40]
mov edx, edi
sub edx, ecx
cmp edx, eax
mov dword [esp + 0x1c], edx
jle 0x47dc59
mov eax, ebx
mov cl, byte [esp + 0x18]
cdq
idiv dword [esp + 0x6c]
mov edx, dword [esp + 0x1c]
add al, cl
mov byte [edi + ebp], al
mov eax, dword [esp + 0x40]
add eax, edx
test eax, eax
jge 0x47dc71
mov eax, dword [esp + 0x34]
mov cl, byte [esp + 0x2c]
cdq
idiv dword [esp + 0x6c]
sub cl, al
mov byte [edi + ebp], cl
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov dl, byte [esp + 0x70]
mov cl, byte [edi + ebp]
sub ebx, 0x80
sub al, dl
add cl, al
mov byte [edi + ebp], cl
mov ecx, dword [esp + 0x34]
inc edi
add ecx, 0x80
cmp edi, esi
mov dword [esp + 0x34], ecx
jl 0x47dc2d
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x78]
mov edi, dword [esp + 0x30]
add ebp, edx
mov edx, dword [esp + 0x6c]
add edi, edx
mov edx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x30], edi
cmp ecx, edx
mov dword [esp + 0x5c], ecx
jl 0x47dbe1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
mov ebx, dword [esp + 0x10]
test ebx, ebx
jle case.default.0x47d8f6
mov dword [esp + 0x6c], 0
mov dword [esp + 0x40], ebx
mov eax, dword [esp + 0x6c]
xor ebp, ebp
cdq
idiv ebx
mov ecx, eax
sub ecx, 0x7f
test esi, esi
jle 0x47ddb8
mov eax, ecx
mov ebx, esi
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x18]
sar eax, 7
mov dword [esp + 0x54], eax
mov eax, 0x80
sub eax, edx
shl ebx, 8
mov dword [esp + 0x5c], eax
sub ebx, esi
mov eax, ebx
cdq
idiv esi
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
mov ecx, dword [esp + 0x18]
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x54]
sar eax, 7
add eax, edx
imul eax, dword [esp + 0x5c]
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
add eax, 0x80
cmp eax, ecx
jge 0x47dd83
mov eax, ecx
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jle 0x47dd8d
mov eax, ecx
mov byte [edi + ebp], al
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov dl, byte [esp + 0x70]
mov cl, byte [edi + ebp]
sub ebx, 0xff
sub al, dl
add cl, al
mov byte [edi + ebp], cl
inc ebp
cmp ebp, esi
jl 0x47dd3c
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x40]
add edi, edx
add ecx, 0xff
dec eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x40], eax
jne 0x47dcf2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
test esi, esi
mov dword [esp + 0x6c], 0
jle case.default.0x47d8f6
mov edi, esi
mov ebp, 0x80
shl edi, 8
sub ebp, ecx
sub edi, esi
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x40], edi
mov eax, edi
cdq
idiv esi
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
imul eax, ebp
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
mov eax, dword [esp + 0x10]
sar ebx, 7
add ebx, 0x80
test eax, eax
jle 0x47de84
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x10]
lea edi, [ecx + eax]
mov byte [edi], bl
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x70]
mov dl, byte [edi]
sub al, cl
mov ecx, dword [esp + 0x78]
add dl, al
mov byte [edi], dl
add edi, ecx
dec ebp
jne 0x47de5a
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x5c]
mov eax, dword [esp + 0x6c]
sub edi, 0xff
inc eax
mov dword [esp + 0x40], edi
cmp eax, esi
mov dword [esp + 0x6c], eax
jl 0x47de0b
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
mov edx, dword [esp + 0x10]
test edx, edx
jle case.default.0x47d8f6
mov eax, 0x80
mov dword [esp + 0x6c], 0
sub eax, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x6c]
xor ebp, ebp
cdq
idiv dword [esp + 0x10]
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
imul eax, dword [esp + 0x5c]
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
sar ebx, 7
add ebx, 0x80
test esi, esi
jle 0x47df31
mov byte [edi + ebp], bl
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x70]
mov dl, byte [edi + ebp]
sub al, cl
add dl, al
mov byte [edi + ebp], dl
inc ebp
cmp ebp, esi
jl 0x47df10
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x40]
add edi, edx
add ecx, 0xff
dec eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x40], eax
jne 0x47decc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
sub eax, ecx
mov ecx, dword [esp + 0x10]
cdq
sub eax, edx
sar eax, 1
test ecx, ecx
mov dword [esp + 0x14], eax
jle case.default.0x47d8f6
mov dword [esp + 0x5c], 0
mov dword [esp + 0x40], ecx
xor ebp, ebp
test esi, esi
jle 0x47dfdd
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x14]
cdq
idiv dword [esp + 0x10]
mov dword [esp + 0x6c], eax
mov eax, ebx
neg eax
imul ebx, esi
mov dword [esp + 0x54], eax
mov eax, ebx
mov cl, byte [esp + 0x18]
cdq
idiv esi
add al, byte [esp + 0x6c]
add al, cl
mov byte [edi + ebp], al
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov dl, byte [esp + 0x70]
mov cl, byte [edi + ebp]
sub al, dl
add cl, al
mov byte [edi + ebp], cl
mov ecx, dword [esp + 0x54]
inc ebp
add ebx, ecx
cmp ebp, esi
jl 0x47dfa3
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x78]
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x40]
add edi, ebx
add edx, eax
dec ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x40], ecx
jne 0x47df81
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
sub eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
test eax, eax
jle case.default.0x47d8f6
mov dword [esp + 0x6c], 0
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x18]
cdq
idiv dword [esp + 0x10]
xor ebp, ebp
mov ebx, eax
add ebx, ecx
test esi, esi
jle 0x47e058
mov byte [edi + ebp], bl
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x70]
mov dl, byte [edi + ebp]
sub al, cl
add dl, al
mov byte [edi + ebp], dl
inc ebp
cmp ebp, esi
jl 0x47e037
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x5c]
add edi, edx
mov edx, dword [esp + 0x14]
add ecx, edx
dec eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x5c], eax
jne 0x47e020
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
sub eax, ecx
mov dword [esp + 0x6c], 0
test esi, esi
jle case.default.0x47d8f6
mov ecx, eax
neg ecx
imul eax, esi
mov dword [esp + 0x54], ecx
mov dword [esp + 0x5c], eax
cdq
idiv esi
mov edx, dword [esp + 0x18]
mov ebx, eax
mov eax, dword [esp + 0x10]
add ebx, edx
test eax, eax
jle 0x47e0ea
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x10]
lea edi, [ecx + eax]
mov byte [edi], bl
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x70]
mov dl, byte [edi]
sub al, cl
mov ecx, dword [esp + 0x78]
add dl, al
mov byte [edi], dl
add edi, ecx
dec ebp
jne 0x47e0c4
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x5c]
inc edx
add eax, ecx
cmp edx, esi
mov dword [esp + 0x6c], edx
mov dword [esp + 0x5c], eax
jl 0x47e0a2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20
mov eax, dword [esp + 0x10]
test eax, eax
jle case.default.0x47d8f6
mov ebx, dword [sym.imp.MSVCRT.dll_rand]
mov dword [esp + 0x6c], eax
xor ebp, ebp
test esi, esi
jle 0x47e138
call ebx
cdq
idiv dword [esp + 0x74]
sub al, byte [esp + 0x70]
add al, 0x80
mov byte [edi + ebp], al
inc ebp
cmp ebp, esi
jl 0x47e123
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x6c]
add edi, ecx
dec eax
mov dword [esp + 0x6c], eax
jne 0x47e11d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x20