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

Disassembly:
sub esp, 0x478
mov eax, dword [0x4cacfc]
xor eax, esp
mov dword [esp + 0x474], eax
mov eax, dword [esp + 0x480]
push esi
mov esi, dword [esp + 0x480]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x60], ecx
lea eax, [esp + 0x2c]
mov ecx, esi
mov dword [esp + 0x68], edx
mov dword [esp + 4], 0
mov dword [esp + 0x48], 0xff
call fcn.0042c2f0
test eax, eax
jne 0x42c694
pop esi
mov ecx, dword [esp + 0x474]
xor ecx, esp
call fcn.00486dc0
add esp, 0x478
ret
mov eax, dword [esi + 4]
xor ecx, ecx
test eax, eax
setg cl
cdq
push ebx
mov ebx, dword [esp + 0x34]
push ebp
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x64], ecx
mov ecx, eax
xor ecx, edx
sub ecx, edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x3c]
push edi
mov edi, dword [esp + 0x58]
mov dword [esi + 4], ecx
cmp edx, 0xc
jne 0x42c6e8
cmp ebp, 0x18
jge 0x42c6fd
mov edx, ebx
sub edx, edi
sub edx, 0x18
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
jmp 0x42c6f6
cmp ebp, 0x10
jge 0x42c6fa
mov eax, ebx
sub eax, edi
sub eax, edx
sar eax, 2
mov dword [esp + 0x10], eax
cmp ebp, 0x18
mov edi, dword [esp + 0x50]
jne 0x42c714
cmp edi, 0xff000000
jne 0x42c714
mov dword [esi + 8], 3
jmp 0x42c721
xor eax, eax
test edi, edi
setne al
add eax, 3
mov dword [esi + 8], eax
mov edi, dword [esi]
test edi, edi
jl 0x42c775
je 0x42c73f
mov eax, SysReAllocString
cdq
idiv edi
xor edx, edx
cmp eax, 4
setge dl
mov eax, edx
test eax, eax
je 0x42c775
lea ebp, [edi*4]
test ebp, ebp
jl 0x42c775
test ecx, ecx
jl 0x42c775
je 0x42c765
mov eax, SysReAllocString
cdq
idiv ecx
xor edx, edx
cmp ebp, eax
setle dl
mov eax, edx
test eax, eax
je 0x42c775
mov eax, edi
imul eax, ecx
add eax, eax
add eax, eax
cmp eax, 0x7fffffff
jle 0x42c78c
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx]
mov dword [edx + 4], str.too_large
xor eax, eax
jmp 0x42d1ce
test edi, edi
jl 0x42c7ec
je 0x42c7a8
mov eax, SysReAllocString
cdq
idiv edi
xor edx, edx
cmp eax, 4
setge dl
mov eax, edx
test eax, eax
je 0x42c7ec
lea ebp, [edi*4]
test ebp, ebp
jl 0x42c7ec
test ecx, ecx
jl 0x42c7ec
je 0x42c7ce
mov eax, SysReAllocString
cdq
idiv ecx
xor edx, edx
cmp ebp, eax
setle dl
mov eax, edx
test eax, eax
je 0x42c7ec
imul edi, ecx
add edi, edi
add edi, edi
cmp edi, 0x7fffffff
jg 0x42c7ec
push edi
call fcn.004876f9
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x42c802
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov dword [ecx + 4], str.outofmem
xor eax, eax
jmp 0x42d1ce
xor edi, edi
cmp dword [esp + 0x38], 0x10
jge 0x42ccc4
mov eax, dword [esp + 0x10]
test eax, eax
je 0x42cca4
cmp eax, 0x100
jg 0x42cca4
xor ebx, ebx
test eax, eax
jle 0x42c92a
mov ecx, dword [esi + 0xa8]
cmp ecx, dword [esi + 0xac]
jae 0x42c849
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42c866
cmp dword [esi + 0x20], edi
je 0x42c864
call fcn.00423a60
mov ecx, dword [esi + 0xa8]
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42c866
xor al, al
mov byte [esp + ebx*4 + 0x86], al
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x42c886
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42c8a3
cmp dword [esi + 0x20], edi
je 0x42c8a1
call fcn.00423a60
mov eax, dword [esi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42c8a3
xor cl, cl
mov eax, dword [esi + 0xa8]
mov byte [esp + ebx*4 + 0x85], cl
cmp eax, dword [esi + 0xac]
jae 0x42c8c3
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42c8e0
cmp dword [esi + 0x20], edi
je 0x42c8de
call fcn.00423a60
mov eax, dword [esi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42c8e0
xor cl, cl
cmp dword [esp + 0x40], 0xc
mov byte [esp + ebx*4 + 0x84], cl
je 0x42c915
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x42c905
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42c915
cmp dword [esi + 0x20], edi
je 0x42c915
call fcn.00423a60
inc dword [esi + 0xa8]
mov eax, dword [esp + 0x10]
mov byte [esp + ebx*4 + 0x87], 0xff
inc ebx
cmp ebx, eax
jl 0x42c830
mov ecx, dword [esp + 0x40]
xor edx, edx
cmp ecx, 0xc
setne dl
add edx, 3
imul edx, eax
mov eax, dword [esp + 0x3c]
sub eax, edx
sub eax, dword [esp + 0x58]
sub eax, ecx
jns 0x42c958
mov eax, dword [esi + 0xac]
mov dword [esi + 0xa8], eax
jmp 0x42c961
mov edx, eax
mov eax, esi
call fcn.00423aa0
mov ecx, dword [esp + 0x38]
cmp ecx, 1
jne 0x42c974
mov eax, dword [esi]
add eax, 7
shr eax, 3
jmp 0x42c98b
cmp ecx, 4
jne 0x42c980
mov eax, dword [esi]
inc eax
shr eax, 1
jmp 0x42c98b
cmp ecx, 8
jne 0x42cc84
mov eax, dword [esi]
neg eax
and eax, 3
mov ebx, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], edi
cmp ecx, 1
jne 0x42cafa
cmp dword [esi + 4], edi
jle 0x42d121
lea esp, [esp]
mov eax, dword [esi + 0xa8]
mov dword [esp + 0x18], 7
cmp eax, dword [esi + 0xac]
jae 0x42c9d1
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42c9ef
cmp dword [esi + 0x20], 0
je 0x42c9ed
call fcn.00423a60
mov eax, dword [esi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42c9ef
xor cl, cl
movzx ecx, cl
xor edx, edx
cmp dword [esi], edx
mov dword [esp + 0x1c], ecx
jle 0x42ca9a
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
sar eax, cl
inc edi
inc edi
inc edi
and eax, 1
movzx ecx, byte [esp + eax*4 + 0x84]
mov byte [edi + ebp - 3], cl
movzx ecx, byte [esp + eax*4 + 0x85]
mov al, byte [esp + eax*4 + 0x86]
mov byte [edi + ebp - 2], cl
mov byte [edi + ebp - 1], al
mov byte [edi + ebp], 0xff
lea ebx, [edx + 1]
inc edi
cmp ebx, dword [esi]
je 0x42ca96
sub dword [esp + 0x18], 1
jns 0x42ca8c
mov eax, dword [esi + 0xa8]
mov dword [esp + 0x18], 7
cmp eax, dword [esi + 0xac]
jae 0x42ca67
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42ca85
cmp dword [esi + 0x20], 0
je 0x42ca83
call fcn.00423a60
mov eax, dword [esi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42ca85
xor cl, cl
movzx ecx, cl
mov dword [esp + 0x1c], ecx
mov edx, ebx
cmp edx, dword [esi]
jl 0x42ca00
mov ebx, dword [esp + 0x10]
test ebx, ebx
jge 0x42caac
mov edx, dword [esi + 0xac]
mov dword [esi + 0xa8], edx
jmp 0x42cae3
cmp dword [esi + 0x10], 0
je 0x42cadd
mov ecx, dword [esi + 0xac]
mov eax, ecx
sub eax, dword [esi + 0xa8]
cmp eax, ebx
jge 0x42cadd
mov edx, dword [esi + 0x1c]
mov dword [esi + 0xa8], ecx
mov ecx, ebx
sub ecx, eax
mov eax, dword [esi + 0x14]
push ecx
push edx
call eax
add esp, 8
jmp 0x42cae3
add dword [esi + 0xa8], ebx
mov eax, dword [esp + 0x14]
inc eax
cmp eax, dword [esi + 4]
mov dword [esp + 0x14], eax
jl 0x42c9b0
jmp 0x42d121
cmp dword [esi + 4], edi
jle 0x42d121
mov edx, dword [esp + 0x10]
jmp 0x42cb10
xor ebx, ebx
cmp dword [esi], ebx
jle 0x42cc1e
lea ebx, [ebx]
mov ecx, dword [esi + 0xa8]
cmp ecx, dword [esi + 0xac]
jae 0x42cb39
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42cb57
cmp dword [esi + 0x20], 0
je 0x42cb55
call fcn.00423a60
mov ecx, dword [esi + 0xa8]
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42cb57
xor al, al
xor ecx, ecx
cmp dword [esp + 0x38], 4
movzx eax, al
jne 0x42cb6b
mov ecx, eax
and ecx, 0xf
sar eax, 4
movzx edx, byte [esp + eax*4 + 0x84]
mov byte [edi + ebp], dl
movzx edx, byte [esp + eax*4 + 0x85]
mov al, byte [esp + eax*4 + 0x86]
inc edi
mov byte [edi + ebp], dl
inc edi
mov byte [edi + ebp], al
inc edi
mov byte [edi + ebp], 0xff
lea edx, [ebx + 1]
inc edi
cmp edx, dword [esi]
je 0x42cc1a
cmp dword [esp + 0x38], 8
jne 0x42cbe7
mov ecx, dword [esi + 0xa8]
cmp ecx, dword [esi + 0xac]
jae 0x42cbc1
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
movzx eax, al
jmp 0x42cbe9
cmp dword [esi + 0x20], 0
je 0x42cbe0
call fcn.00423a60
mov ecx, dword [esi + 0xa8]
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
movzx eax, al
jmp 0x42cbe9
xor al, al
movzx eax, al
jmp 0x42cbe9
mov eax, ecx
mov cl, byte [esp + eax*4 + 0x84]
mov dl, byte [esp + eax*4 + 0x85]
mov al, byte [esp + eax*4 + 0x86]
mov byte [edi + ebp], cl
inc edi
mov byte [edi + ebp], dl
inc edi
mov byte [edi + ebp], al
inc edi
mov byte [edi + ebp], 0xff
add ebx, 2
inc edi
cmp ebx, dword [esi]
jl 0x42cb20
mov edx, dword [esp + 0x10]
test edx, edx
jge 0x42cc30
mov ecx, dword [esi + 0xac]
mov dword [esi + 0xa8], ecx
jmp 0x42cc6d
cmp dword [esi + 0x10], 0
je 0x42cc67
mov ecx, dword [esi + 0xac]
mov eax, ecx
sub eax, dword [esi + 0xa8]
cmp eax, edx
jge 0x42cc67
mov edx, dword [esp + 0x10]
sub edx, eax
mov eax, dword [esi + 0x1c]
push edx
mov dword [esi + 0xa8], ecx
mov ecx, dword [esi + 0x14]
push eax
call ecx
mov edx, dword [esp + 0x18]
add esp, 8
jmp 0x42cc6d
add dword [esi + 0xa8], edx
mov eax, dword [esp + 0x14]
inc eax
cmp eax, dword [esi + 4]
mov dword [esp + 0x14], eax
jl 0x42cb10
jmp 0x42d121
push ebp
call fcn.0048836e
mov edx, dword fs:[0x2c]
mov eax, dword [edx]
add esp, 4
mov dword [eax + 4], str.bad_bpp
xor eax, eax
jmp 0x42d1ce
push ebp
call fcn.0048836e
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx]
add esp, 4
mov dword [edx + 4], str.invalid
xor eax, eax
jmp 0x42d1ce
sub ebx, dword [esp + 0x58]
xor ecx, ecx
sub ebx, dword [esp + 0x40]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x18], ecx
mov edx, ebx
jns 0x42cd04
mov eax, dword [esi + 0xac]
mov dword [esi + 0xa8], eax
jmp 0x42cd0d
mov eax, esi
call fcn.00423aa0
xor ecx, ecx
mov edx, dword [esp + 0x38]
cmp edx, 0x18
jne 0x42cd1d
mov eax, dword [esi]
lea eax, [eax + eax*2]
jmp 0x42cd2a
cmp edx, 0x10
jne 0x42cd28
mov eax, dword [esi]
add eax, eax
jmp 0x42cd2a
xor eax, eax
mov ebx, dword [esp + 0x4c]
neg eax
and eax, 3
mov dword [esp + 0x10], eax
cmp edx, 0x18
jne 0x42cd90
mov dword [esp + 0x18], 1
cmp dword [esi + 4], edi
mov dword [esp + 0x14], edi
jle 0x42d121
xor ebx, ebx
cmp dword [esp + 0x18], ebx
je 0x42cf6e
cmp dword [esi], ebx
jle 0x42d0c0
jmp 0x42cd70
mov ecx, dword [esi + 0xa8]
cmp ecx, dword [esi + 0xac]
jae 0x42ce79
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42ce97
cmp edx, 0x20
jne 0x42cdc8
cmp ebx, 0xff
jne 0x42cdc8
cmp dword [esp + 0x48], 0xff00
jne 0x42cdc8
cmp dword [esp + 0x44], 0xff0000
jne 0x42cdc8
cmp dword [esp + 0x50], 0xff000000
jne 0x42cde4
mov dword [esp + 0x18], 2
jmp 0x42cd44
cmp dword [esp + 0x44], ecx
je 0x42ce59
cmp dword [esp + 0x48], ecx
je 0x42ce59
cmp ebx, ecx
je 0x42ce59
mov edx, dword [esp + 0x44]
mov ecx, edx
call fcn.0042c250
sub eax, 7
mov ecx, edx
mov dword [esp + 0x28], eax
call fcn.0042c2a0
mov edx, dword [esp + 0x48]
mov ecx, edx
mov dword [esp + 0x34], eax
call fcn.0042c250
sub eax, 7
mov ecx, edx
mov dword [esp + 0x24], eax
call fcn.0042c2a0
mov ecx, ebx
mov dword [esp + 0x30], eax
call fcn.0042c250
sub eax, 7
mov ecx, ebx
mov dword [esp + 0x2c], eax
call fcn.0042c2a0
mov edx, dword [esp + 0x50]
mov ecx, edx
mov dword [esp + 0x1c], eax
call fcn.0042c250
sub eax, 7
mov ecx, edx
mov dword [esp + 0x5c], eax
call fcn.0042c2a0
mov dword [esp + 0x60], eax
jmp 0x42cd44
push ebp
call fcn.0048836e
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx]
add esp, 4
mov dword [edx + 4], str.bad_masks
xor eax, eax
jmp 0x42d1ce
cmp dword [esi + 0x20], 0
je 0x42ce95
call fcn.00423a60
mov ecx, dword [esi + 0xa8]
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42ce97
xor al, al
mov byte [edi + ebp + 2], al
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x42ceb4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42ced2
cmp dword [esi + 0x20], 0
je 0x42ced0
call fcn.00423a60
mov eax, dword [esi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42ced2
xor cl, cl
mov byte [edi + ebp + 1], cl
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x42ceef
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42cf0d
cmp dword [esi + 0x20], 0
je 0x42cf0b
call fcn.00423a60
mov eax, dword [esi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x42cf0d
xor cl, cl
mov byte [edi + ebp], cl
add edi, 3
cmp dword [esp + 0x18], 2
jne 0x42cf53
mov ecx, dword [esi + 0xa8]
cmp ecx, dword [esi + 0xac]
jae 0x42cf33
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42cf55
cmp dword [esi + 0x20], 0
je 0x42cf4f
call fcn.00423a60
mov ecx, dword [esi + 0xa8]
mov al, byte [ecx]
inc ecx
mov dword [esi + 0xa8], ecx
jmp 0x42cf55
xor al, al
jmp 0x42cf55
or al, 0xff
movzx ecx, al
or dword [esp + 0x20], ecx
mov byte [edi + ebp], al
inc ebx
inc edi
cmp ebx, dword [esi]
jl 0x42cd70
jmp 0x42d0c0
cmp dword [esi], ebx
mov dword [esp + 0x64], ebx
jle 0x42d0c0
mov eax, 8
sub eax, dword [esp + 0x30]
mov ebx, 8
sub ebx, dword [esp + 0x34]
mov dword [esp + 0x7c], eax
mov eax, 8
sub eax, dword [esp + 0x1c]
mov dword [esp + 0x80], ebx
mov dword [esp + 0x70], eax
mov eax, esi
call fcn.00423c20
cmp dword [esp + 0x38], 0x10
je 0x42cfc7
mov ebx, eax
mov eax, esi
call fcn.00423c20
shl eax, 0x10
add eax, ebx
mov ebx, dword [esp + 0x80]
mov ecx, dword [esp + 0x28]
mov edx, eax
and edx, dword [esp + 0x44]
test ecx, ecx
jge 0x42cfdb
neg ecx
shl edx, cl
jmp 0x42cfdd
shr edx, cl
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x34]
inc edi
imul edx, dword [ecx*4 + 0x4cc9a4]
mov ecx, dword [ecx*4 + 0x4cc9c8]
sar edx, cl
mov ecx, dword [esp + 0x24]
mov byte [edi + ebp - 1], dl
mov edx, eax
and edx, dword [esp + 0x48]
test ecx, ecx
jge 0x42d00f
neg ecx
shl edx, cl
jmp 0x42d011
shr edx, cl
mov ecx, dword [esp + 0x7c]
shr edx, cl
mov ecx, dword [esp + 0x30]
inc edi
imul edx, dword [ecx*4 + 0x4cc9a4]
mov ecx, dword [ecx*4 + 0x4cc9c8]
sar edx, cl
mov ecx, dword [esp + 0x2c]
mov byte [edi + ebp - 1], dl
mov edx, eax
and edx, dword [esp + 0x4c]
test ecx, ecx
jge 0x42d045
neg ecx
shl edx, cl
jmp 0x42d047
shr edx, cl
mov ecx, dword [esp + 0x70]
shr edx, cl
mov ecx, dword [esp + 0x1c]
inc edi
imul edx, dword [ecx*4 + 0x4cc9a4]
mov ecx, dword [ecx*4 + 0x4cc9c8]
sar edx, cl
cmp dword [esp + 0x50], 0
mov byte [edi + ebp - 1], dl
je 0x42d0a2
mov ecx, dword [esp + 0x5c]
and eax, dword [esp + 0x50]
test ecx, ecx
jge 0x42d080
neg ecx
shl eax, cl
jmp 0x42d082
shr eax, cl
mov edx, dword [esp + 0x60]
mov ecx, 8
sub ecx, edx
shr eax, cl
mov ecx, dword [edx*4 + 0x4cc9c8]
imul eax, dword [edx*4 + 0x4cc9a4]
sar eax, cl
jmp 0x42d0a7
mov eax, 0xff
or dword [esp + 0x20], eax
mov byte [edi + ebp], al
mov eax, dword [esp + 0x64]
inc eax
inc edi
cmp eax, dword [esi]
mov dword [esp + 0x64], eax
jl 0x42cfa4
mov edx, dword [esp + 0x10]
test edx, edx
jge 0x42d0d6
mov edx, dword [esi + 0xac]
mov dword [esi + 0xa8], edx
jmp 0x42d10f
cmp dword [esi + 0x10], 0
je 0x42d109
mov ecx, dword [esi + 0xac]
mov eax, ecx
sub eax, dword [esi + 0xa8]
cmp eax, edx
jge 0x42d109
mov edx, dword [esi + 0x1c]
mov dword [esi + 0xa8], ecx
mov ecx, dword [esp + 0x10]
sub ecx, eax
mov eax, dword [esi + 0x14]
push ecx
push edx
call eax
add esp, 8
jmp 0x42d10f
add dword [esi + 0xa8], edx
mov eax, dword [esp + 0x14]
inc eax
cmp eax, dword [esi + 4]
mov dword [esp + 0x14], eax
jl 0x42cd51
cmp dword [esp + 0x20], 0
jne 0x42d14a
mov eax, dword [esi]
imul eax, dword [esi + 4]
lea eax, [eax*4 - 1]
test eax, eax
jl 0x42d14a
lea esp, [esp]
sub eax, 4
mov byte [eax + ebp + 4], 0xff
jns 0x42d140
cmp dword [esp + 0x68], 0
je 0x42d1ae
xor edx, edx
test dword [esi + 4], 0xfffffffe
mov dword [esp + 0x14], edx
jle 0x42d1ae
mov ecx, dword [esi]
mov eax, ecx
imul eax, edx
lea ebx, [ebp + eax*4]
mov eax, dword [esi + 4]
sub eax, edx
dec eax
imul eax, ecx
add ecx, ecx
add ecx, ecx
xor edi, edi
lea eax, [ebp + eax*4]
test ecx, ecx
jle 0x42d1a0
mov ecx, ebx
sub ecx, eax
mov dl, byte [ecx + eax]
mov bl, byte [eax]
mov byte [ecx + eax], bl
mov byte [eax], dl
mov edx, dword [esi]
add edx, edx
inc edi
add edx, edx
inc eax
cmp edi, edx
jl 0x42d186
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 4]
inc edx
sar eax, 1
cmp edx, eax
mov dword [esp + 0x14], edx
jl 0x42d160
mov ecx, dword [esi]
mov edx, dword [esp + 0x78]
mov dword [edx], ecx
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x6c]
mov dword [ecx], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x42d1cc
mov edx, dword [esi + 8]
mov dword [eax], edx
mov eax, ebp
mov ecx, dword [esp + 0x484]
pop edi
pop ebp
pop ebx
pop esi
xor ecx, esp
call fcn.00486dc0
add esp, 0x478
ret