Function at 0x59ae40
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x24
push ebx
mov ebx, dword [esp + 0x3c]
push ebp
push esi
mov esi, dword [esp + 0x38]
push edi
mov edi, dword [esp + 0x38]
push 0
push 0x6b576c
push 0x6b5b1c
push 0
push esi
mov byte [esi + 4], 1
call fcn.00627068
mov ebp, eax
add esp, 0x14
test ebp, ebp
je 0x59ae27
mov eax, dword [ebp + 0x48]
test eax, eax
mov dword [esp + 0x14], eax
jne 0x59a71a
mov eax, dword [ebp]
mov edx, dword [eax + 0x7c]
mov ecx, ebp
call edx
mov ecx, dword [ebx + 4]
imul ecx, dword [esi + 0x24]
add ecx, dword [ebx]
lea edx, [eax + ecx*4]
mov eax, dword [edi]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x7c]
mov ecx, edi
call edx
mov ecx, dword [edi + 0x24]
imul ecx, dword [esp + 0x44]
add ecx, dword [esp + 0x40]
cmp byte [edi + 0x52], 0
lea edx, [eax + ecx*4]
mov dword [esp + 0x44], edx
jne 0x59a286
cmp byte [edi + 0x51], 0
jne 0x59a286
mov edi, dword [esp + 0x4c]
mov eax, 0x7329bc
mov ecx, edi
call fcn.0056a480
test al, al
jne 0x59a28a
mov eax, dword [ebp]
mov edx, dword [eax + 0x48]
mov ecx, ebp
call edx
mov ecx, dword [ebx + 4]
imul ecx, dword [esi + 0x24]
add ecx, dword [ebx]
mov dword [esp + 0x20], 0
add ecx, eax
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], ecx
jle 0x59ae1c
mov eax, dword [esp + 0x48]
mov edi, dword [eax + 8]
test edi, edi
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x14], edi
jle 0x59a22f
mov eax, dword [esp + 0x40]
mov al, byte [eax]
mov ecx, dword [edx]
movzx ebx, al
cmp ebx, edi
mov byte [esp + 0x4c], al
jle 0x59a0ce
mov al, byte [esp + 0x14]
mov byte [esp + 0x4c], al
mov ebx, ecx
shr ebx, 0x18
mov edi, pe_nt_image_headers32
sub edi, ebx
cmp edi, 1
jne 0x59a104
movzx eax, al
test eax, eax
jle 0x59a215
mov ecx, eax
lea esp, [esp]
mov edi, dword [edx]
mov dword [esi], edi
add esi, 4
add edx, 4
sub ecx, 1
jne 0x59a0f0
jmp 0x59a215
cmp edi, 0x100
jne 0x59a11f
movzx eax, al
lea ecx, [eax*4]
add esi, ecx
add edx, ecx
jmp 0x59a215
mov eax, pe_nt_image_headers32
sub eax, edi
mov dword [esp + 0x18], eax
mov eax, dword [esi]
mov ebx, eax
and ebx, 0xff00ff
mov ebp, ecx
imul ebx, edi
and eax, 0xff00
and ebp, 0xff00ff
imul eax, edi
imul ebp, dword [esp + 0x18]
and ecx, 0xff00
imul ecx, dword [esp + 0x18]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
movzx eax, byte [esp + 0x4c]
or ebx, 0xff000000
mov dword [esi], ebx
add edx, 4
add esi, 4
cmp eax, 1
mov dword [esp + 0x24], eax
jle 0x59a215
add eax, 0xffffffff
mov dword [esp + 0x4c], eax
jmp 0x59a1a0
mov ecx, dword [edx]
mov eax, dword [esi]
add edx, 4
mov dword [esp + 0x18], edx
mov edx, ecx
mov ebx, eax
shr edx, 0x18
and ebx, 0xff00ff
mov ebp, ecx
and eax, 0xff00
mov edi, pe_nt_image_headers32
sub edi, edx
imul ebx, edi
imul eax, edi
and ebp, 0xff00ff
and ecx, 0xff00
imul ebp, edx
imul ecx, edx
mov edx, dword [esp + 0x18]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
or ebx, 0xff000000
mov dword [esi], ebx
add esi, 4
sub dword [esp + 0x4c], 1
jne 0x59a1a0
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
add dword [esp + 0x40], eax
sub edi, eax
test edi, edi
mov dword [esp + 0x14], edi
jg 0x59a0b3
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov edx, dword [esp + 0x44]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [edx + 0x24]
mov edx, dword [esp + 0x10]
lea edx, [edx + eax*4]
add ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x48]
add eax, 1
cmp eax, dword [edx + 0xc]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
jl 0x59a094
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov edi, dword [esp + 0x4c]
mov eax, edi
call fcn.0056a440
test al, al
je 0x59a3ef
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x59ae1c
jmp 0x59a2b0
cmp dword [ebx + 8], 0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], 0
jle 0x59a3a2
mov edi, edi
mov edi, dword [eax]
mov ecx, dword [esp + 0x4c]
mov ecx, dword [ecx]
add eax, 4
mov ebp, edi
shr ebp, 0x18
mov dword [esp + 0x24], eax
je 0x59a389
mov ebx, ecx
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
sar edx, 7
mov eax, ebp
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00ff
mov edx, pe_nt_image_headers32
and ecx, 0xff00
shl esi, 0x18
sub edx, eax
mov dword [esp + 0x40], eax
imul ebx, edx
imul ecx, edx
mov eax, edi
and eax, 0xff00ff
imul eax, dword [esp + 0x40]
and edi, 0xff00
imul edi, dword [esp + 0x40]
shr ebx, 8
shr eax, 8
add ebx, eax
mov eax, dword [esp + 0x4c]
shr ecx, 8
shr edi, 8
and ebx, 0xff00ff
add ecx, edi
and ecx, 0xff00
or ebx, ecx
or ebx, esi
mov dword [eax], ebx
mov ebx, dword [esp + 0x48]
add eax, 4
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
jmp 0x59a38e
add dword [esp + 0x4c], 4
mov ecx, dword [esp + 0x20]
add ecx, 1
cmp ecx, dword [ebx + 8]
mov dword [esp + 0x20], ecx
jl 0x59a2d0
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + 0x24]
mov eax, dword [esp + 0x44]
lea ecx, [eax + edx*4]
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x24]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x10]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], eax
jl 0x59a2b0
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov eax, dword [edi + 0xc]
mov ecx, dword [edi]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 4]
cmp ecx, eax
mov edi, dword [edi + 8]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], edi
jne 0x59a587
cmp eax, edi
jne 0x59a587
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x59ae1c
lea esp, [esp]
mov ecx, dword [esp + 0x48]
cmp dword [ecx + 8], 0
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], 0
jle 0x59a536
mov ecx, dword [ebx]
mov edi, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
mov eax, 0x80808081
mul edx
add ebx, 4
mov ebp, edx
shr ebp, 7
mov dword [esp + 0x24], ebx
je 0x59a517
mov ebx, edi
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00ff
imul ebx, dword [esp + 0x40]
and ecx, 0xff00
shr ebx, 8
and ebx, 0xff00ff
mov ebp, edi
mov edx, pe_nt_image_headers32
and ebp, 0xff00ff
and edi, 0xff00
shl esi, 0x18
imul ecx, eax
imul ebx, eax
imul ecx, dword [esp + 0x40]
sub edx, eax
imul ebp, edx
imul edi, edx
shr ebx, 8
shr ecx, 0x10
shr ebp, 8
add ebx, ebp
shr edi, 8
add ecx, edi
and ebx, 0xff00ff
and ecx, 0xff00
or ebx, ecx
or ebx, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], ebx
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], eax
jl 0x59a452
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x44]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x10]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ecx + 0xc]
mov dword [esp + 0x1c], eax
jl 0x59a430
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x14], 0
jle 0x59ae1c
lea esp, [esp]
mov edx, dword [esp + 0x48]
cmp dword [edx + 8], 0
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x1c], 0
jle 0x59a6c9
mov ecx, dword [edi]
mov ebx, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
mov eax, 0x80808081
mul edx
add edi, 4
mov ebp, edx
shr ebp, 7
mov dword [esp + 0x2c], edi
je 0x59a6aa
mov edi, ebx
shr edi, 0x18
mov esi, 0xff
sub esi, edi
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, edi
cdq
idiv esi
mov edi, ecx
and edi, 0xff0000
mov ebp, ebx
and ebp, 0xff0000
mov edx, pe_nt_image_headers32
shl esi, 0x18
imul edi, eax
sub edx, eax
imul ebp, edx
shr edi, 8
imul edi, dword [esp + 0x40]
mov dword [esp + 0x20], edx
movzx edx, cl
and ecx, 0xff00
imul edx, eax
imul edx, dword [esp + 0x24]
imul ecx, eax
imul ecx, dword [esp + 0x28]
shr edi, 8
shr ebp, 8
add edi, ebp
movzx ebp, bl
imul ebp, dword [esp + 0x20]
and ebx, 0xff00
imul ebx, dword [esp + 0x20]
shr edx, 0x10
shr ebp, 8
shr ecx, 0x10
and edi, 0xff0000
add edx, ebp
shr ebx, 8
and edx, 0xff
add ecx, ebx
or edi, edx
and ecx, 0xff00
or edi, ecx
or edi, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], edi
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x1c], eax
jl 0x59a5c2
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x44]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x10]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
add eax, 1
cmp eax, dword [ecx + 0xc]
mov dword [esp + 0x14], eax
jl 0x59a5a0
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov edi, dword [ebx + 4]
mov edx, esi
imul edi, dword [edx + 0x24]
add edi, dword [ebp + 0x4c]
mov esi, dword [esp + 0x38]
add edi, dword [ebx]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, esi
mov dword [esp + 0x10], edi
call edx
mov ecx, dword [esi + 0x24]
imul ecx, dword [esp + 0x44]
add ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
cmp byte [edx + 0x52], 0
lea esi, [eax + ecx*4]
mov dword [esp + 0x44], esi
jne 0x59a9a7
mov eax, edx
cmp byte [eax + 0x51], 0
jne 0x59a9a7
mov ecx, dword [esp + 0x4c]
mov eax, 0x7329bc
call fcn.0056a480
test al, al
jne 0x59a9a7
mov edx, dword [ebp]
mov eax, dword [edx + 0x48]
mov ecx, ebp
call eax
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
imul ecx, dword [edx + 0x24]
add ecx, dword [ebx]
mov dword [esp + 0x24], 0
add ecx, eax
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], ecx
jle 0x59ae1c
jmp 0x59a7b0
mov eax, dword [esp + 0x48]
mov edi, dword [eax + 8]
test edi, edi
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], edi
jle 0x59a957
nop
movzx ecx, byte [edx]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esp + 0x40]
mov al, byte [eax]
movzx ebx, al
cmp ebx, edi
mov byte [esp + 0x4c], al
jle 0x59a7f3
mov al, byte [esp + 0x18]
mov byte [esp + 0x4c], al
mov ebx, ecx
shr ebx, 0x18
mov edi, pe_nt_image_headers32
sub edi, ebx
cmp edi, 1
jne 0x59a82d
movzx eax, al
test eax, eax
jle 0x59a93d
mov edi, dword [esp + 0x14]
mov ecx, eax
movzx ebx, byte [edx]
mov ebx, dword [edi + ebx*4]
mov dword [esi], ebx
add esi, 4
add edx, 1
sub ecx, 1
jne 0x59a815
jmp 0x59a93d
cmp edi, 0x100
jne 0x59a842
movzx eax, al
lea esi, [esi + eax*4]
add edx, eax
jmp 0x59a93d
mov eax, pe_nt_image_headers32
sub eax, edi
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov ebx, eax
and ebx, 0xff00ff
mov ebp, ecx
imul ebx, edi
and eax, 0xff00
and ebp, 0xff00ff
imul eax, edi
imul ebp, dword [esp + 0x20]
and ecx, 0xff00
imul ecx, dword [esp + 0x20]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
movzx eax, byte [esp + 0x4c]
or ebx, 0xff000000
mov dword [esi], ebx
add edx, 1
add esi, 4
cmp eax, 1
mov dword [esp + 0x2c], eax
jle 0x59a93d
add eax, 0xffffffff
mov dword [esp + 0x4c], eax
mov edi, edi
movzx ecx, byte [edx]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esi]
add edx, 1
mov dword [esp + 0x20], edx
mov edx, ecx
mov ebx, eax
shr edx, 0x18
and ebx, 0xff00ff
mov ebp, ecx
and eax, 0xff00
mov edi, pe_nt_image_headers32
sub edi, edx
imul ebx, edi
imul eax, edi
and ebp, 0xff00ff
and ecx, 0xff00
imul ebp, edx
imul ecx, edx
mov edx, dword [esp + 0x20]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
or ebx, 0xff000000
mov dword [esi], ebx
add esi, 4
sub dword [esp + 0x4c], 1
jne 0x59a8c0
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
add dword [esp + 0x40], eax
sub edi, eax
test edi, edi
mov dword [esp + 0x18], edi
jg 0x59a7d0
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov edx, dword [esp + 0x44]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [edx + 0x24]
add dword [esp + 0x10], eax
mov edx, dword [esp + 0x48]
add ecx, eax
mov eax, dword [esp + 0x24]
add eax, 1
cmp eax, dword [edx + 0xc]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], eax
jl 0x59a7b0
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov ebp, dword [esp + 0x4c]
mov eax, ebp
call fcn.0056a440
test al, al
je 0x59ab14
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x59ae1c
lea esp, [esp]
cmp dword [ebx + 8], 0
mov dword [esp + 0x4c], esi
mov dword [esp + 0x40], edi
mov dword [esp + 0x20], 0
jle 0x59aad4
lea ebx, [ebx]
mov eax, dword [esp + 0x40]
movzx ecx, byte [eax]
mov edx, dword [esp + 0x14]
mov edi, dword [edx + ecx*4]
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax]
mov ebp, edi
shr ebp, 0x18
je 0x59aaad
mov ebx, ecx
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
sar edx, 7
mov eax, ebp
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00
mov edx, pe_nt_image_headers32
and ecx, 0xff00ff
shl esi, 0x18
sub edx, eax
mov dword [esp + 0x24], eax
imul ebx, edx
imul ecx, edx
mov eax, edi
and eax, 0xff00
imul eax, dword [esp + 0x24]
and edi, 0xff00ff
imul edi, dword [esp + 0x24]
shr ebx, 8
shr eax, 8
add ebx, eax
mov eax, dword [esp + 0x4c]
shr ecx, 8
shr edi, 8
add ecx, edi
and ebx, 0xff00
and ecx, 0xff00ff
or ebx, ecx
or ebx, esi
mov dword [eax], ebx
add eax, 4
mov dword [esp + 0x4c], eax
jmp 0x59aab2
add dword [esp + 0x4c], 4
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
cmp eax, dword [ecx + 8]
mov dword [esp + 0x20], eax
jl 0x59a9f0
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov ebx, ecx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x3c]
add edi, dword [ecx + 0x24]
lea esi, [esi + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
jl 0x59a9d0
mov ecx, edx
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov ecx, dword [ebp]
mov eax, dword [ebp + 4]
cmp ecx, eax
mov edx, dword [ebp + 0xc]
mov ebp, dword [ebp + 8]
mov dword [esp + 0x18], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebp
jne 0x59aca6
cmp eax, ebp
jne 0x59aca6
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x59ae1c
cmp dword [ebx + 8], 0
mov dword [esp + 0x4c], esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], 0
jle 0x59ac66
lea esp, [esp]
mov eax, dword [esp + 0x24]
movzx ecx, byte [eax]
mov edx, dword [esp + 0x14]
mov ecx, dword [edx + ecx*4]
mov edi, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
add eax, 1
mov dword [esp + 0x24], eax
mov eax, 0x80808081
mul edx
mov ebp, edx
shr ebp, 7
je 0x59ac3d
mov ebx, edi
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00ff
imul ebx, dword [esp + 0x40]
and ecx, 0xff00
shr ebx, 8
and ebx, 0xff00ff
mov ebp, edi
mov edx, pe_nt_image_headers32
and ebp, 0xff00ff
and edi, 0xff00
shl esi, 0x18
imul ecx, eax
imul ebx, eax
imul ecx, dword [esp + 0x40]
sub edx, eax
imul ebp, edx
imul edi, edx
shr ebx, 8
shr ecx, 0x10
shr ebp, 8
shr edi, 8
add ebx, ebp
add ecx, edi
and ebx, 0xff00ff
and ecx, 0xff00
or ebx, ecx
or ebx, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], ebx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], eax
jl 0x59ab70
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov ebx, ecx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x3c]
add edi, dword [ecx + 0x24]
lea esi, [esi + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
jl 0x59ab52
mov ecx, edx
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x59ae1c
jmp 0x59acc0
cmp dword [ebx + 8], 0
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], 0
jle 0x59adef
movzx edx, byte [edi]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + edx*4]
mov ebx, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
mov eax, 0x80808081
mul edx
add edi, 1
mov ebp, edx
shr ebp, 7
mov dword [esp + 0x30], edi
je 0x59adc6
mov edi, ebx
shr edi, 0x18
mov esi, 0xff
sub esi, edi
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, edi
cdq
idiv esi
mov edi, ecx
and edi, 0xff0000
mov ebp, ebx
and ebp, 0xff0000
mov edx, pe_nt_image_headers32
shl esi, 0x18
imul edi, eax
sub edx, eax
imul ebp, edx
shr edi, 8
imul edi, dword [esp + 0x40]
mov dword [esp + 0x24], edx
movzx edx, cl
and ecx, 0xff00
imul edx, eax
imul edx, dword [esp + 0x2c]
imul ecx, eax
imul ecx, dword [esp + 0x28]
shr edi, 8
shr ebp, 8
add edi, ebp
movzx ebp, bl
imul ebp, dword [esp + 0x24]
and ebx, 0xff00
imul ebx, dword [esp + 0x24]
shr edx, 0x10
shr ebp, 8
shr ecx, 0x10
and edi, 0xff0000
add edx, ebp
shr ebx, 8
and edx, 0xff
add ecx, ebx
or edi, edx
and ecx, 0xff00
or edi, ecx
or edi, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], edi
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], eax
jl 0x59acd6
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov ebx, ecx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x3c]
add edi, dword [ecx + 0x24]
lea esi, [esi + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
jl 0x59acc0
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov eax, dword [esp + 0x18]
sub eax, 0
mov edx, dword [esp + 4]
mov byte [edx + 4], 1
je 0x59ae75
sub eax, 1
jne 0x59ae72
mov eax, dword [esp + 0x14]
push edi
mov edi, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push eax
push edx
push ecx
call fcn.005994f0
pop edi
ret 0x18
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
jmp 0x599fc0