Function at 0x41a150
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x94c
mov eax, dword [0x49e7c0]
xor eax, esp
mov dword [esp + 0x948], eax
mov eax, dword [esp + 0x970]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x95c]
push edi
mov ebx, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], 0
call fcn.0041e6e0
movzx ecx, word [esi + 0x22]
mov eax, dword [esi + 0x18]
imul eax, ecx
mov edi, dword [esi + 0x444]
mov ebp, dword [esi + 0x448]
add edi, dword [esp + 0x964]
add ebp, dword [esp + 0x968]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x440]
cmp eax, 0x8000018
mov dword [esp + 0x1c], ecx
jg 0x41a75e
je 0x41a4f3
cmp eax, 0x800000c
jg 0x41a4e8
je 0x41a4f3
sub eax, 0x4000010
je 0x41a25f
sub eax, 0x10
je 0x41a791
mov eax, dword [esp + 0x988]
mov ecx, dword [esp + 0x984]
mov edx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x974]
push ecx
mov ecx, dword [esp + 0x974]
push edx
mov edx, dword [esp + 0x974]
push eax
mov eax, dword [esp + 0x974]
push ecx
push edx
push eax
push esi
mov ecx, ebx
call fcn.0041ec70
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x958]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004777ea
add esp, 0x94c
ret 0x2c
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x1c]
imul eax, edi
cdq
and edx, 7
add eax, edx
sar eax, 3
test ecx, ecx
jge 0x41a293
mov ecx, dword [esp + 0x18]
mov edx, ecx
imul edx, ebp
add eax, edx
add eax, dword [esi + 0x43c]
neg ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
jmp 0x41a2a9
sub ecx, ebp
sub ecx, 1
imul ecx, dword [esp + 0x18]
add ecx, eax
add ecx, dword [esi + 0x43c]
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x988]
mov ecx, dword [esp + 0x970]
mov edx, dword [esp + 0x96c]
push 0
push eax
push 0
push 1
push 1
push ecx
push edx
push ebp
push edi
push 0x4000018
mov ecx, ebx
call fcn.0041e8e0
test eax, eax
mov dword [esp + 0x20], eax
jne 0x41a244
mov ecx, ebx
call fcn.00408f90
mov edi, eax
mov eax, dword [ebx + 0x1c]
sub eax, 1
imul edi, eax
add edi, dword [ebx + 0x43c]
mov ecx, ebx
call fcn.00408f90
cmp dword [esi + 0x24], 3
mov dword [esp + 0x28], eax
jne 0x41a451
mov ecx, dword [esi + 0x3c]
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], eax
xor ecx, ecx
jmp 0x41a330
mov eax, dword [esp + ecx + 0x30]
test eax, eax
mov dword [esp + ecx + 0x3c], 0
je 0x41a34d
test al, 1
jne 0x41a34d
add dword [esp + ecx + 0x3c], 1
shr eax, 1
jne 0x41a340
mov dword [esp + ecx + 0x4c], eax
add ecx, 4
cmp ecx, 0xc
jl 0x41a330
cmp dword [esp + 0x970], 0
mov dword [esp + 0x1c], 0
jle 0x41a240
mov ebp, dword [esp + 0x14]
add edi, 2
mov dword [esp + 0x10], edi
lea ebx, [ebx]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x41a3a7
mov ecx, dword [esp + 0x984]
mov edx, dword [esp + 0x970]
push ecx
mov ecx, dword [esp + 0x20]
push edx
push ecx
call eax
test eax, eax
jne 0x41ab22
xor esi, esi
cmp dword [esp + 0x96c], esi
jle 0x41a428
mov edi, dword [esp + 0x10]
jmp 0x41a3c0
movzx eax, word [ebp + esi*2]
mov ecx, dword [esp + 0x44]
movzx ebx, ax
mov eax, ebx
and eax, dword [esp + 0x38]
xor edx, edx
shr eax, cl
mov ecx, dword [esp + 0x40]
add esi, 1
add edi, 3
imul eax, eax, 0xff
div dword [esp + 0x54]
xor edx, edx
mov byte [edi - 5], al
mov eax, ebx
and eax, dword [esp + 0x34]
shr eax, cl
mov ecx, dword [esp + 0x3c]
imul eax, eax, 0xff
div dword [esp + 0x50]
xor edx, edx
mov byte [edi - 4], al
mov eax, ebx
and eax, dword [esp + 0x30]
shr eax, cl
imul eax, eax, 0xff
div dword [esp + 0x4c]
cmp esi, dword [esp + 0x96c]
mov byte [edi - 3], al
jl 0x41a3c0
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
sub dword [esp + 0x10], edx
sub ebp, dword [esp + 0x18]
add eax, 1
cmp eax, dword [esp + 0x970]
mov dword [esp + 0x1c], eax
jl 0x41a380
jmp 0x41a240
xor ebx, ebx
cmp dword [esp + 0x970], ebx
jle 0x41a240
mov ebp, dword [esp + 0x96c]
add edi, 2
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x41a495
mov ecx, dword [esp + 0x984]
mov edx, dword [esp + 0x970]
push ecx
push edx
push ebx
call eax
test eax, eax
jne 0x41ab22
xor esi, esi
test ebp, ebp
jle 0x41a4cb
mov ecx, dword [esp + 0x10]
nop
movzx eax, word [edi + esi*2]
mov dl, al
add dl, dl
add dl, dl
add dl, dl
mov byte [ecx - 2], dl
mov edx, eax
shr edx, 2
shr eax, 7
and dl, 0xf8
and al, 0xf8
mov byte [ecx - 1], dl
mov byte [ecx], al
add esi, 1
add ecx, 3
cmp esi, ebp
jl 0x41a4a0
mov eax, dword [esp + 0x28]
sub dword [esp + 0x10], eax
sub edi, dword [esp + 0x18]
add ebx, 1
cmp ebx, dword [esp + 0x970]
jl 0x41a472
jmp 0x41a240
cmp eax, 0x8000010
jne 0x41a1ff
cmp eax, 0x8000018
jne 0x41a5aa
mov ecx, dword [esp + 0x988]
mov edx, dword [esp + 0x970]
mov eax, dword [esp + 0x96c]
push 0
push ecx
push 0
push 1
push 4
push edx
push eax
push ebp
push edi
push 0x4000018
mov ecx, ebx
call fcn.0041e8e0
test eax, eax
mov dword [esp + 0x20], eax
jne 0x41a244
movzx eax, word [esi + 0x22]
imul eax, dword [esi + 0x18]
add eax, 7
cdq
and edx, 7
add eax, edx
mov ecx, eax
movzx eax, word [ebx + 0x22]
imul eax, dword [ebx + 0x18]
add eax, 7
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x970]
sar eax, 3
sar ecx, 3
add eax, 3
push 0
and eax, 0xfffffffc
push eax
add ecx, 3
and ecx, 0xfffffffc
push ecx
imul ecx, ebp
mov eax, edi
and eax, 3
add eax, dword [esp + 0x978]
push edx
mov edx, dword [ebx + 0x43c]
push eax
and edi, 0xfffffffc
lea eax, [edi + edi*2]
add ecx, eax
add ecx, dword [esi + 0x43c]
push edx
push ecx
call fcn.0041cd10
jmp 0x41a240
cmp eax, 0x8000010
jne 0x41a65f
mov ecx, dword [esp + 0x988]
mov edx, dword [esp + 0x970]
mov eax, dword [esp + 0x96c]
push 0
push ecx
push 0
push 1
push 2
push edx
push eax
push ebp
push edi
push 0x4000018
mov ecx, ebx
call fcn.0041e8e0
test eax, eax
mov dword [esp + 0x20], eax
jne 0x41a244
movzx eax, word [esi + 0x22]
imul eax, dword [esi + 0x18]
add eax, 7
cdq
and edx, 7
add eax, edx
mov ecx, eax
movzx eax, word [ebx + 0x22]
imul eax, dword [ebx + 0x18]
add eax, 7
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x970]
sar eax, 3
add eax, 3
push 0
and eax, 0xfffffffc
push eax
sar ecx, 3
add ecx, 3
and ecx, 0xfffffffc
push ecx
imul ecx, ebp
mov eax, edi
and eax, 1
add eax, dword [esp + 0x978]
push edx
mov edx, dword [ebx + 0x43c]
push eax
and edi, 0xfffffffe
lea eax, [ecx + edi*2]
add eax, dword [esi + 0x43c]
push edx
push eax
call fcn.0041bc00
jmp 0x41a240
cmp eax, 0x800000c
jne 0x41a240
mov ecx, dword [esp + 0x988]
mov edx, dword [esp + 0x970]
mov eax, dword [esp + 0x96c]
push 0
push ecx
push 0
push 2
push 8
push edx
push eax
push ebp
push edi
push 0x4000018
mov ecx, ebx
call fcn.0041e8e0
test eax, eax
mov dword [esp + 0x20], eax
jne 0x41a244
mov edx, ebp
and edx, 1
add dword [esp + 0x970], edx
and ebp, 0xfffffffe
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x28], eax
mov ecx, edi
and edi, 0xfffffff8
mov eax, edi
cdq
and ecx, 7
add dword [esp + 0x96c], ecx
sub eax, edx
sar eax, 1
push 0
mov ecx, ebx
mov dword [esp + 0x18], eax
call fcn.00408f90
push eax
mov ecx, esi
call fcn.00408f90
push eax
mov ecx, esi
call fcn.00408f90
mov ecx, dword [esp + 0x978]
mov edx, dword [ebx + 0x43c]
push eax
mov eax, dword [esp + 0x980]
push eax
push ecx
push edx
mov ecx, esi
call fcn.00408f90
mov ebx, eax
imul ebx, dword [esp + 0x44]
mov ecx, esi
call fcn.00409000
add ebx, dword [esp + 0x30]
mov ecx, esi
add eax, ebx
push eax
call fcn.00408f90
mov ebx, eax
imul ebx, dword [esp + 0x48]
mov ecx, esi
call fcn.00408fb0
add ebx, dword [esp + 0x34]
mov ecx, esi
add eax, ebx
push eax
call fcn.00408f90
imul eax, ebp
add eax, dword [esi + 0x43c]
add eax, edi
push eax
call fcn.0041cbb0
jmp 0x41a240
cmp eax, 0x20000004
jg 0x41a89d
je 0x41a8a8
cmp eax, 0x10000020
je 0x41a791
cmp eax, 0x20000000
jle 0x41a1ff
cmp eax, 0x20000002
jle 0x41a8a8
jmp 0x41a1ff
cmp byte [esp + 0x97c], 0
je 0x41a863
mov eax, dword [esp + 0x988]
mov ecx, dword [esp + 0x970]
mov edx, dword [esp + 0x96c]
push 0
push eax
push 0
push 1
push 1
push ecx
push edx
push ebp
push edi
push 0x4000018
mov ecx, ebx
call fcn.0041e8e0
test eax, eax
mov dword [esp + 0x20], eax
jne 0x41a244
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x1c]
imul eax, edi
cdq
and edx, 7
add eax, edx
test ecx, ecx
jge 0x41a803
mov edi, eax
mov eax, dword [esp + 0x18]
imul eax, ebp
sar edi, 3
add edi, eax
add edi, dword [esi + 0x43c]
jmp 0x41a822
sub ecx, ebp
mov ebp, dword [esp + 0x18]
sub ecx, 1
imul ecx, ebp
sar eax, 3
add ecx, eax
add ecx, dword [esi + 0x43c]
neg ebp
mov edi, ecx
mov dword [esp + 0x18], ebp
mov ecx, ebx
call fcn.00408f90
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x970]
neg eax
push eax
mov eax, dword [esp + 0x970]
push ecx
push edx
push eax
mov ecx, ebx
call fcn.00408f90
mov ecx, dword [ebx + 0x1c]
sub ecx, 1
imul eax, ecx
add eax, dword [ebx + 0x43c]
push eax
push edi
call fcn.0041c280
jmp 0x41a240
mov edx, dword [esp + 0x988]
mov eax, dword [esp + 0x984]
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x974]
push eax
mov eax, dword [esp + 0x974]
push ecx
mov ecx, dword [esp + 0x974]
push edx
mov edx, dword [esp + 0x974]
push eax
push ecx
push edx
jmp 0x41a234
cmp eax, 0x20000008
jne 0x41a1ff
cmp byte [esp + 0x974], 0
je 0x41a1ff
mov edx, dword [esi + 0x34]
test edx, edx
jne 0x41a8c4
mov edx, 1
shl edx, cl
cmp dword [esp + 0x1c], 8
jne 0x41a969
xor eax, eax
test edx, edx
jle 0x41a90f
lea ecx, [esi + 0x3d]
mov dword [esp + 0x10], ecx
lea esp, [esp]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx - 1]
cmp ecx, eax
jne 0x41a90f
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx]
cmp ecx, eax
jne 0x41a90f
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx + 1]
cmp ecx, eax
jne 0x41a90f
add dword [esp + 0x10], 4
add eax, 1
cmp eax, edx
jl 0x41a8e0
cmp eax, edx
jne 0x41a969
cmp byte [esp + 0x978], 0
jne 0x41a969
mov edx, dword [esp + 0x988]
mov eax, dword [esp + 0x984]
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x974]
push eax
mov eax, dword [esp + 0x974]
push ecx
mov ecx, dword [esp + 0x974]
push edx
mov edx, dword [esp + 0x974]
push eax
push ecx
push edx
push esi
mov ecx, ebx
call fcn.0041ec70
mov dword [ebx + 0x440], 0x8000008
jmp 0x41a244
test edx, edx
mov dword [esp + 0x14], 0
jle 0x41a996
lea eax, [esi + 0x3c]
mov cl, byte [eax]
cmp cl, byte [eax + 1]
jne 0x41a996
cmp cl, byte [eax + 2]
jne 0x41a996
mov ecx, dword [esp + 0x14]
add ecx, 1
add eax, 4
cmp ecx, edx
mov dword [esp + 0x14], ecx
jl 0x41a978
cmp dword [esp + 0x14], edx
jne 0x41ad49
cmp byte [esp + 0x978], 0
jne 0x41ad49
mov edx, dword [esp + 0x988]
mov eax, dword [esp + 0x970]
mov ecx, dword [esp + 0x96c]
push 0
push edx
push 0
push 1
push 8
push eax
push ecx
push ebp
push edi
push 0x8000008
mov ecx, ebx
call fcn.0041e8e0
test eax, eax
mov dword [esp + 0x20], eax
jne 0x41a244
mov eax, dword [esp + 0x96c]
mov ecx, dword [esi + 0x1c]
mov edx, edi
and edx, 7
lea eax, [edx + eax + 7]
and eax, 0xfffffff8
and edi, 0xfffffff8
test ecx, ecx
mov dword [esp + 0x96c], eax
jge 0x41aa39
mov ecx, dword [esp + 0x1c]
mov eax, ecx
imul eax, edi
cdq
and edx, 7
add eax, edx
mov edi, eax
mov eax, dword [esp + 0x18]
mov edx, eax
imul edx, ebp
sar edi, 3
add edi, edx
add edi, dword [esi + 0x43c]
neg eax
mov dword [esp + 0x18], eax
jmp 0x41aa61
mov eax, dword [esp + 0x1c]
imul eax, edi
sub ecx, ebp
sub ecx, 1
imul ecx, dword [esp + 0x18]
cdq
and edx, 7
add eax, edx
sar eax, 3
add ecx, eax
add ecx, dword [esi + 0x43c]
mov edi, ecx
mov ecx, dword [esp + 0x1c]
movzx eax, word [ebx + 0x22]
imul eax, dword [ebx + 0x18]
mov ebp, dword [ebx + 0x1c]
add eax, 7
cdq
and edx, 7
add edx, eax
sar edx, 3
add edx, 3
and edx, 0xfffffffc
sub ebp, 1
imul ebp, edx
add ebp, dword [ebx + 0x43c]
xor eax, eax
mov dword [esp + 0x10], edx
add esi, 0x3c
mov bl, byte [esi]
mov byte [esp + eax + 0x58], bl
add eax, 1
add esi, 4
cmp eax, 0x100
jl 0x41aa93
cmp ecx, 8
jne 0x41ab2c
xor ebx, ebx
cmp dword [esp + 0x970], ebx
jle 0x41a240
mov edi, edi
cmp dword [esp + 0x24], 0
je 0x41aae4
mov eax, dword [esp + 0x984]
mov ecx, dword [esp + 0x970]
push eax
push ecx
push ebx
call dword [esp + 0x30]
test eax, eax
jne 0x41ab22
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x96c]
test esi, esi
jle 0x41ab0b
mov ecx, edi
mov eax, ebp
sub ecx, ebp
movzx edx, byte [ecx + eax]
mov dl, byte [esp + edx + 0x58]
mov byte [eax], dl
add eax, 1
sub esi, 1
jne 0x41aaf5
mov edx, dword [esp + 0x10]
sub edi, dword [esp + 0x18]
add ebx, 1
sub ebp, edx
cmp ebx, dword [esp + 0x970]
jl 0x41aac0
jmp 0x41a240
mov eax, 0x63
jmp 0x41a244
cmp ecx, 1
jne 0x41ac87
xor eax, eax
mov ecx, eax
sar ecx, 7
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x158], cl
mov ecx, eax
sar ecx, 6
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x159], cl
mov ecx, eax
sar ecx, 5
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x15a], cl
mov ecx, eax
sar ecx, 4
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x15b], cl
mov ecx, eax
sar ecx, 3
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x15c], cl
mov ecx, eax
sar ecx, 2
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x15d], cl
mov ecx, eax
sar ecx, 1
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x15e], cl
mov ecx, eax
and ecx, 1
movzx ecx, byte [esp + ecx + 0x58]
mov byte [esp + eax*8 + 0x15f], cl
add eax, 1
cmp eax, 0x100
jl 0x41ab37
xor ebx, ebx
cmp dword [esp + 0x970], ebx
jle 0x41a240
add ebp, 4
mov dword [esp + 0x28], ebp
cmp dword [esp + 0x24], 0
je 0x41ac1f
mov edx, dword [esp + 0x984]
mov eax, dword [esp + 0x970]
push edx
push eax
push ebx
call dword [esp + 0x30]
test eax, eax
jne 0x41ab22
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x96c]
test esi, esi
mov ecx, edi
jle 0x41ac64
add esi, 0xffffffff
shr esi, 3
mov eax, ebp
add esi, 1
jmp 0x41ac40
movzx ebp, byte [ecx]
mov ebp, dword [esp + ebp*8 + 0x158]
mov dword [eax - 4], ebp
movzx ebp, byte [ecx]
mov ebp, dword [esp + ebp*8 + 0x15c]
mov dword [eax], ebp
add ecx, 1
add eax, 8
sub esi, 1
jne 0x41ac40
mov ebp, dword [esp + 0x28]
sub edi, dword [esp + 0x18]
sub ebp, edx
add ebx, 1
cmp ebx, dword [esp + 0x970]
mov dword [esp + 0x28], ebp
jl 0x41abf7
jmp 0x41a240
mov esi, dword [esp + 0x1c]
mov ebx, 1
mov ecx, esi
shl ebx, cl
mov eax, 8
sub eax, esi
mov dword [esp + 0x2c], eax
sub ebx, 1
cmp dword [esp + 0x970], 0
mov dword [esp + 0x14], 0
jle 0x41a240
mov eax, dword [esp + 0x24]
test eax, eax
je 0x41ace3
mov ecx, dword [esp + 0x984]
mov edx, dword [esp + 0x970]
push ecx
mov ecx, dword [esp + 0x18]
push edx
push ecx
call eax
test eax, eax
jne 0x41ab22
mov edx, dword [esp + 0x10]
xor esi, esi
xor eax, eax
cmp dword [esp + 0x96c], esi
jle 0x41ad26
movzx ecx, byte [esp + 0x2c]
mov dl, al
and dl, 7
sub cl, dl
mov edx, eax
add eax, dword [esp + 0x1c]
shr edx, 3
movzx edx, byte [edx + edi]
shr edx, cl
add esi, 1
and edx, ebx
cmp esi, dword [esp + 0x96c]
movzx ecx, byte [esp + edx + 0x58]
mov byte [esi + ebp - 1], cl
jl 0x41acf0
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
sub edi, dword [esp + 0x18]
add eax, 1
sub ebp, edx
cmp eax, dword [esp + 0x970]
mov dword [esp + 0x14], eax
jl 0x41acb8
jmp 0x41a240
mov edx, dword [esp + 0x988]
mov eax, dword [esp + 0x970]
mov ecx, dword [esp + 0x96c]
push 0
push edx
push 0
push 1
push 1
push eax
push ecx
push ebp
push edi
push 0x4000018
mov ecx, ebx
call fcn.0041e8e0
test eax, eax
mov dword [esp + 0x20], eax
jne 0x41a244
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x1c]
imul eax, edi
cdq
and edx, 7
add eax, edx
test ecx, ecx
jge 0x41adb5
mov edi, eax
mov eax, dword [esp + 0x18]
mov edx, eax
imul edx, ebp
sar edi, 3
add edi, edx
add edi, dword [esi + 0x43c]
neg eax
mov dword [esp + 0x18], eax
jmp 0x41adcc
sub ecx, ebp
sub ecx, 1
imul ecx, dword [esp + 0x18]
sar eax, 3
add ecx, eax
add ecx, dword [esi + 0x43c]
mov edi, ecx
movzx eax, word [ebx + 0x22]
imul eax, dword [ebx + 0x18]
add eax, 7
cdq
and edx, 7
add eax, edx
mov edx, dword [ebx + 0x1c]
sar eax, 3
add eax, 3
and eax, 0xfffffffc
sub edx, 1
imul edx, eax
add edx, dword [ebx + 0x43c]
cmp dword [esp + 0x1c], 8
mov dword [esp + 0x10], eax
jne 0x41aea7
xor ebx, ebx
cmp dword [esp + 0x970], ebx
mov dword [esp + 0x28], ebx
jle 0x41a240
add edx, 2
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x96c]
cmp dword [esp + 0x24], 0
je 0x41ae50
mov eax, dword [esp + 0x984]
mov ecx, dword [esp + 0x970]
push eax
push ecx
push ebx
call dword [esp + 0x30]
test eax, eax
jne 0x41ab22
mov edx, dword [esp + 0x96c]
xor ebp, ebp
test edx, edx
jle 0x41ae86
mov ecx, dword [esp + 0x14]
lea ebx, [ebx]
movzx eax, byte [edi + ebp]
mov eax, dword [esi + eax*4 + 0x3c]
mov ebx, eax
mov byte [ecx - 2], al
shr ebx, 8
shr eax, 0x10
mov byte [ecx - 1], bl
mov byte [ecx], al
add ebp, 1
add ecx, 3
cmp ebp, edx
jl 0x41ae60
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
sub dword [esp + 0x14], ecx
sub edi, dword [esp + 0x18]
add ebx, 1
cmp ebx, dword [esp + 0x970]
mov dword [esp + 0x28], ebx
jl 0x41ae25
jmp 0x41a240
mov ecx, dword [esp + 0x1c]
mov ebp, 1
shl ebp, cl
mov eax, 8
sub eax, ecx
mov dword [esp + 0x48], eax
sub ebp, 1
cmp dword [esp + 0x970], 0
mov dword [esp + 0x28], 0
jle 0x41a240
add edx, 2
mov dword [esp + 0x14], edx
lea ecx, [ecx]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x41af07
mov edx, dword [esp + 0x984]
mov ecx, dword [esp + 0x970]
push edx
mov edx, dword [esp + 0x2c]
push ecx
push edx
call eax
test eax, eax
jne 0x41ab22
xor ebx, ebx
cmp dword [esp + 0x96c], ebx
jle 0x41af5c
mov eax, dword [esp + 0x96c]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
movzx ecx, byte [esp + 0x48]
mov al, bl
and al, 7
sub cl, al
mov eax, ebx
add ebx, dword [esp + 0x1c]
shr eax, 3
movzx eax, byte [eax + edi]
shr eax, cl
add edx, 3
and eax, ebp
mov eax, dword [esi + eax*4 + 0x3c]
mov ecx, eax
mov byte [edx - 5], al
shr ecx, 8
shr eax, 0x10
sub dword [esp + 0x2c], 1
mov byte [edx - 4], cl
mov byte [edx - 3], al
jne 0x41af21
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
sub dword [esp + 0x14], edx
sub edi, dword [esp + 0x18]
add eax, 1
cmp eax, dword [esp + 0x970]
mov dword [esp + 0x28], eax
jl 0x41aee0
jmp 0x41a240