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

Disassembly:
sub esp, 0x498
mov dword [esp + 0x70], edx
lea edx, [esp + 0x74]
push esi
mov esi, ecx
mov dword [esp + 8], 0
mov dword [esp + 0x94], 0xff
call fcn.1007b090
test eax, eax
je 0x1007b55c
mov eax, dword [esi + 4]
mov dword [esp + 0x70], eax
cdq
xor eax, edx
sub eax, edx
mov dword [esi + 4], eax
cmp eax, 0x1000000
jbe 0x1007b566
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0x10], str.too_large
xor eax, eax
pop esi
add esp, 0x498
ret
cmp dword [esi], 0x1000000
ja 0x1007b543
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 0x98]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x94]
push ebx
push ebp
mov ebp, dword [esp + 0x84]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ebp
push edi
cmp eax, 0xc
jne 0x1007b5f5
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x24], ebx
cmp ebx, 0x18
jge 0x1007b61a
mov ecx, ebp
mov eax, 0x55555556
sub ecx, edx
sub ecx, 0x18
imul ecx
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jmp 0x1007b60e
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x24], ecx
cmp ecx, 0x10
jge 0x1007b61a
mov ebx, ebp
sub ebx, edx
sub ebx, eax
sar ebx, 2
mov dword [esp + 0x14], ebx
test ebx, ebx
jne 0x1007b69b
mov ecx, dword [esi + 0xa8]
sub ecx, dword [esi + 0xb4]
mov edx, dword [esi + 0xac]
add ecx, edx
lea eax, [ecx - 1]
cmp eax, 0x3ff
ja 0x1007c483
cmp ebp, ecx
jl 0x1007c45d
mov eax, ebp
sub eax, ecx
cmp eax, 0x400
jg 0x1007c45d
test eax, eax
je 0x1007b69b
jns 0x1007b661
mov eax, dword [esi + 0xb0]
jmp 0x1007b695
cmp dword [esi + 0x10], 0
je 0x1007b693
mov edi, dword [esi + 0xb0]
mov ecx, edi
sub ecx, edx
cmp ecx, eax
jge 0x1007b693
sub eax, ecx
mov dword [esi + 0xac], edi
mov edi, dword [esi + 0x14]
mov ecx, edi
push eax
push dword [esi + 0x1c]
call dword [0x1013f2d4]
call edi
add esp, 8
jmp 0x1007b69b
add eax, edx
mov dword [esi + 0xac], eax
cmp dword [esp + 0x24], 0x18
mov ecx, dword [esp + 0x44]
jne 0x1007b6b5
cmp ecx, 0xff000000
jne 0x1007b6b5
mov eax, 3
jmp 0x1007b6bf
xor eax, eax
test ecx, ecx
setne al
add eax, 3
mov dword [esi + 8], eax
mov ecx, dword [esi]
mov edi, dword [esi + 4]
test ecx, ecx
js 0x1007c437
jne 0x1007b6da
lea ebx, [ecx*4]
jmp 0x1007b6fa
mov eax, 0x7fffffff
cdq
idiv ecx
cmp eax, 4
jl 0x1007c437
lea ebx, [ecx*4]
test ebx, ebx
js 0x1007c437
test edi, edi
js 0x1007c437
je 0x1007b714
mov eax, 0x7fffffff
cdq
idiv edi
cmp ebx, eax
jg 0x1007c437
test ecx, ecx
jne 0x1007b721
lea ebx, [ecx*4]
jmp 0x1007b743
mov eax, 0x7fffffff
cdq
idiv ecx
cmp eax, 4
jl 0x1007c411
lea edx, [ecx*4]
test edx, edx
js 0x1007c411
mov ebx, edx
test edi, edi
je 0x1007b757
mov eax, 0x7fffffff
cdq
idiv edi
cmp ebx, eax
jg 0x1007c411
imul ecx, edi
lea eax, [ecx*4]
push eax
call fcn.1012189d
mov edi, eax
add esp, 4
mov dword [esp + 0x20], edi
test edi, edi
je 0x1007c411
xor ebx, ebx
cmp dword [esp + 0x24], 0x10
jge 0x1007bcfd
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1007bcce
cmp eax, 0x100
jg 0x1007bcce
mov dword [esp + 0x10], ebx
test eax, eax
jle 0x1007b8d5
mov ebp, dword [esp + 0x20]
lea edi, [esi + 0x20]
mov dword [esp + 0x18], ebp
mov ebx, eax
mov ebp, dword [esp + 0x3c]
nop dword [eax]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1007b7d9
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b7fc
cmp dword [esi + 0x20], 0
lea edi, [esi + 0x20]
je 0x1007b7fa
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b7fc
xor cl, cl
mov edx, dword [esp + 0x10]
mov dword [esp + 0x1c], edi
mov byte [esp + edx*4 + 0xaa], cl
cmp eax, dword [esi + 0xb0]
jae 0x1007b81e
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b841
cmp dword [edi], 0
je 0x1007b83f
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov edx, dword [esp + 0x10]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b841
xor cl, cl
mov byte [esp + edx*4 + 0xa9], cl
cmp eax, dword [esi + 0xb0]
jae 0x1007b85e
mov cl, byte [eax]
lea edi, [esi + 0x20]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b881
cmp dword [edi], 0
je 0x1007b87f
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov edx, dword [esp + 0x10]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b881
xor cl, cl
mov byte [esp + edx*4 + 0xa8], cl
cmp ebp, 0xc
je 0x1007b8b4
cmp eax, dword [esi + 0xb0]
jae 0x1007b89e
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b8b4
mov eax, dword [esp + 0x1c]
cmp dword [eax], 0
je 0x1007b8b4
mov ecx, esi
call fcn.10072650
inc dword [esi + 0xac]
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx*4 + 0xab], 0xff
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, ebx
jl 0x1007b7c0
mov ebp, dword [esp + 0x18]
xor ebx, ebx
jmp 0x1007b8d7
mov ebp, edi
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp dword [esp + 0x3c], 0xc
setne al
add eax, 3
imul eax, dword [esp + 0x14]
sub ecx, eax
sub ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x3c]
je 0x1007b947
test ecx, ecx
jns 0x1007b90b
mov eax, dword [esi + 0xb0]
mov dword [esi + 0xac], eax
jmp 0x1007b947
cmp dword [esi + 0x10], 0
je 0x1007b941
mov edx, dword [esi + 0xb0]
mov eax, edx
sub eax, dword [esi + 0xac]
cmp eax, ecx
jge 0x1007b941
mov edi, dword [esi + 0x14]
sub ecx, eax
push ecx
push dword [esi + 0x1c]
mov ecx, edi
mov dword [esi + 0xac], edx
call dword [0x1013f2d4]
call edi
add esp, 8
jmp 0x1007b947
add dword [esi + 0xac], ecx
mov edx, dword [esp + 0x24]
cmp edx, 1
jne 0x1007b95a
mov eax, dword [esi]
add eax, 7
shr eax, 3
jmp 0x1007b971
cmp edx, 4
jne 0x1007b966
mov eax, dword [esi]
inc eax
shr eax, 1
jmp 0x1007b971
cmp edx, 8
jne 0x1007bc9f
mov eax, dword [esi]
mov ecx, dword [esi + 4]
neg eax
and eax, 3
cmp edx, 1
mov dword [esp + 0x28], eax
mov edx, ecx
jne 0x1007bb0e
mov dword [esp + 0x30], 0
test ecx, ecx
jle 0x1007c326
nop dword [eax + eax]
mov eax, dword [esi + 0xac]
mov edi, 7
cmp eax, dword [esi + 0xb0]
jae 0x1007b9be
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b9de
cmp dword [esi + 0x20], 0
je 0x1007b9dc
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007b9de
xor cl, cl
cmp dword [esi], 0
movzx eax, cl
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], 0
jle 0x1007baaf
mov edx, eax
mov ecx, edi
sar edx, cl
and edx, 1
movzx eax, byte [esp + edx*4 + 0xa8]
mov byte [ebx + ebp], al
movzx eax, byte [esp + edx*4 + 0xa9]
mov byte [ebx + ebp + 1], al
movzx eax, byte [esp + edx*4 + 0xaa]
mov byte [ebx + ebp + 2], al
mov eax, dword [esp + 0x2c]
inc eax
mov byte [ebx + ebp + 3], 0xff
mov ecx, dword [esi]
add ebx, 4
mov edx, eax
mov dword [esp + 0x2c], edx
cmp eax, ecx
je 0x1007baaf
sub edi, 1
jns 0x1007baa3
mov eax, dword [esi + 0xac]
mov edi, 7
cmp eax, dword [esi + 0xb0]
jae 0x1007ba69
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
movzx eax, dl
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x18], eax
jmp 0x1007baa7
cmp dword [esi + 0x20], 0
je 0x1007ba94
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
mov ecx, dword [esi]
movzx eax, dl
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x18], eax
jmp 0x1007baa7
xor dl, dl
movzx eax, dl
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x18], eax
jmp 0x1007baa7
mov eax, dword [esp + 0x18]
cmp edx, ecx
jl 0x1007b9f6
mov eax, dword [esp + 0x28]
test eax, eax
je 0x1007baf3
cmp dword [esi + 0x10], 0
je 0x1007baed
mov edx, dword [esi + 0xb0]
mov ecx, edx
sub ecx, dword [esi + 0xac]
cmp ecx, eax
jge 0x1007baed
mov edi, dword [esi + 0x14]
sub eax, ecx
push eax
push dword [esi + 0x1c]
mov ecx, edi
mov dword [esi + 0xac], edx
call dword [0x1013f2d4]
call edi
add esp, 8
jmp 0x1007baf3
add dword [esi + 0xac], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esi + 4]
inc eax
mov dword [esp + 0x30], eax
mov edx, ecx
cmp eax, ecx
jl 0x1007b9a0
jmp 0x1007c326
mov dword [esp + 0x18], 0
test ecx, ecx
jle 0x1007c326
nop
xor edi, edi
cmp dword [esi], edi
jle 0x1007bc40
nop word [eax + eax]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1007bb49
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007bb69
cmp dword [esi + 0x20], 0
je 0x1007bb67
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007bb69
xor cl, cl
mov edx, 0x20
movzx ecx, cl
mov eax, esi
add eax, edx
xor edx, edx
cmp dword [esp + 0x24], 4
mov dword [esp + 0x1c], eax
jne 0x1007bb8a
mov edx, ecx
and edx, 0xf
shr ecx, 4
movzx eax, byte [esp + ecx*4 + 0xa8]
mov byte [ebx + ebp], al
movzx eax, byte [esp + ecx*4 + 0xa9]
mov byte [ebx + ebp + 1], al
movzx eax, byte [esp + ecx*4 + 0xaa]
mov byte [ebx + ebp + 2], al
lea eax, [edi + 1]
mov byte [ebx + ebp + 3], 0xff
add ebx, 4
cmp eax, dword [esi]
je 0x1007bc3c
cmp dword [esp + 0x24], 8
jne 0x1007bc06
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1007bbe0
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007bc03
mov eax, dword [esp + 0x1c]
cmp dword [eax], 0
je 0x1007bc01
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007bc03
xor cl, cl
movzx edx, cl
movzx eax, byte [esp + edx*4 + 0xa8]
add edi, 2
mov byte [ebx + ebp], al
movzx eax, byte [esp + edx*4 + 0xa9]
mov byte [ebx + ebp + 1], al
movzx eax, byte [esp + edx*4 + 0xaa]
mov byte [ebx + ebp + 2], al
mov byte [ebx + ebp + 3], 0xff
add ebx, 4
cmp edi, dword [esi]
jl 0x1007bb30
mov eax, dword [esp + 0x28]
test eax, eax
je 0x1007bc84
cmp dword [esi + 0x10], 0
je 0x1007bc7e
mov edx, dword [esi + 0xb0]
mov ecx, edx
sub ecx, dword [esi + 0xac]
cmp ecx, eax
jge 0x1007bc7e
mov edi, dword [esi + 0x14]
sub eax, ecx
push eax
push dword [esi + 0x1c]
mov ecx, edi
mov dword [esi + 0xac], edx
call dword [0x1013f2d4]
call edi
mov eax, dword [esp + 0x30]
add esp, 8
jmp 0x1007bc84
add dword [esi + 0xac], eax
mov edi, dword [esp + 0x18]
mov ecx, dword [esi + 4]
inc edi
mov dword [esp + 0x18], edi
mov edx, ecx
cmp edi, ecx
jl 0x1007bb20
jmp 0x1007c326
push ebp
call fcn.1011b2ad
mov ecx, dword [0x10203278]
add esp, 4
mov eax, dword fs:[0x2c]
pop edi
mov eax, dword [eax + ecx*4]
pop ebp
pop ebx
pop esi
mov dword [eax + 0x10], str.bad_bpp
xor eax, eax
add esp, 0x498
ret
push edi
call fcn.1011b2ad
mov ecx, dword [0x10203278]
add esp, 4
mov eax, dword fs:[0x2c]
pop edi
mov eax, dword [eax + ecx*4]
pop ebp
pop ebx
pop esi
mov dword [eax + 0x10], str.invalid
xor eax, eax
add esp, 0x498
ret
sub ebp, dword [esp + 0x34]
xor eax, eax
xor edx, edx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], edx
sub ebp, dword [esp + 0x3c]
je 0x1007bd9a
test ebp, ebp
jns 0x1007bd59
mov eax, dword [esi + 0xb0]
mov dword [esi + 0xac], eax
jmp 0x1007bd9a
cmp dword [esi + 0x10], eax
je 0x1007bd94
mov ecx, dword [esi + 0xb0]
mov eax, ecx
sub eax, dword [esi + 0xac]
cmp eax, ebp
jge 0x1007bd94
mov edi, dword [esi + 0x14]
sub ebp, eax
push ebp
push dword [esi + 0x1c]
mov dword [esi + 0xac], ecx
mov ecx, edi
call dword [0x1013f2d4]
call edi
mov edi, dword [esp + 0x28]
add esp, 8
xor edx, edx
jmp 0x1007bd9a
add dword [esi + 0xac], ebp
mov ecx, dword [esp + 0x24]
cmp ecx, 0x18
jne 0x1007bdaa
mov eax, dword [esi]
lea eax, [eax + eax*2]
jmp 0x1007bdb7
cmp ecx, 0x10
jne 0x1007bdb5
mov eax, dword [esi]
add eax, eax
jmp 0x1007bdb7
xor eax, eax
neg eax
mov ebp, edi
and eax, 3
mov dword [esp + 0x78], eax
cmp ecx, 0x18
jne 0x1007bdd8
xor eax, eax
mov dword [esp + 0x14], 1
xor edi, edi
jmp 0x1007bfdc
mov eax, dword [esp + 0x40]
cmp ecx, 0x20
jne 0x1007be25
mov ebp, edi
cmp eax, 0xff
jne 0x1007be25
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
cmp edi, 0xff00
jne 0x1007be2d
mov ebp, dword [esp + 0x20]
cmp ecx, 0xff0000
jne 0x1007be2d
mov edi, dword [esp + 0x44]
mov eax, ebp
cmp edi, 0xff000000
jne 0x1007be55
xor eax, eax
mov dword [esp + 0x14], 2
xor edi, edi
jmp 0x1007bfdc
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x14], edx
test ecx, ecx
je 0x1007c3e2
test edi, edi
je 0x1007c3e2
mov edx, dword [esp + 0x20]
mov dword [esp + 0x20], edx
test eax, eax
je 0x1007c3e2
mov edi, dword [esp + 0x44]
call fcn.1007afb0
sub eax, 7
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x38]
mov edx, eax
and eax, 0x55555555
shr edx, 1
and edx, 0x55555555
add edx, eax
mov eax, edx
and edx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, edx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
mov eax, ecx
shr eax, 8
add ecx, eax
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov ecx, dword [esp + 0x10]
movzx eax, al
mov dword [esp + 0x28], eax
call fcn.1007afb0
sub eax, 7
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x10]
mov edx, eax
and eax, 0x55555555
shr edx, 1
and edx, 0x55555555
add edx, eax
mov eax, edx
and edx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, edx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
mov eax, ecx
shr eax, 8
add ecx, eax
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov ecx, dword [esp + 0x40]
movzx eax, al
mov dword [esp + 0x2c], eax
call fcn.1007afb0
sub eax, 7
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov edx, eax
and eax, 0x55555555
shr edx, 1
and edx, 0x55555555
add edx, eax
mov eax, edx
and edx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, edx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
mov eax, ecx
shr eax, 8
add ecx, eax
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov ecx, edi
movzx eax, al
mov dword [esp + 0x30], eax
call fcn.1007afb0
sub eax, 7
mov edx, edi
mov dword [esp + 0x18], eax
and edi, 0x55555555
shr edx, 1
and edx, 0x55555555
add edx, edi
mov eax, edx
and edx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, edx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
mov eax, ecx
shr eax, 8
add ecx, eax
mov eax, ecx
shr eax, 0x10
add eax, ecx
cmp dword [esp + 0x28], 8
movzx edi, al
mov dword [esp + 0x1c], edi
ja 0x1007c3e2
cmp dword [esp + 0x2c], 8
ja 0x1007c3e2
mov eax, dword [esp + 0x30]
cmp eax, 8
ja 0x1007c3e2
cmp edi, 8
ja 0x1007c3e2
mov ecx, dword [esi + 4]
mov edx, ecx
mov dword [esp + 0x3c], ebx
test ecx, ecx
jle 0x1007c326
mov ecx, dword [esp + 0x4c]
neg ecx
mov dword [esp + 0x58], ecx
mov ecx, 8
sub ecx, dword [esp + 0x28]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x50]
neg ecx
mov dword [esp + 0x60], ecx
mov ecx, 8
sub ecx, dword [esp + 0x2c]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x54]
neg ecx
mov dword [esp + 0x68], ecx
mov ecx, 8
sub ecx, eax
mov eax, dword [esp + 0x18]
neg eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], eax
mov eax, 8
sub eax, edi
mov dword [esp + 0x74], eax
nop word [eax + eax]
cmp dword [esp + 0x14], 0
mov eax, dword [esi]
je 0x1007c19d
mov dword [esp + 0x34], 0
test eax, eax
jle 0x1007c2ca
lea edi, [esi + 0x20]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1007c089
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c0ac
cmp dword [esi + 0x20], 0
lea edi, [esi + 0x20]
je 0x1007c0aa
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c0ac
xor cl, cl
mov eax, dword [esp + 0x20]
mov byte [eax + ebx + 2], cl
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1007c0cd
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c0ec
cmp dword [edi], 0
je 0x1007c0ea
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c0ec
xor cl, cl
mov eax, dword [esp + 0x20]
mov byte [eax + ebx + 1], cl
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1007c110
mov cl, byte [eax]
lea edi, [esi + 0x20]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c12f
cmp dword [edi], 0
je 0x1007c12d
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c12f
xor cl, cl
cmp dword [esp + 0x14], 2
mov byte [ebx + ebp], cl
jne 0x1007c176
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1007c155
mov cl, byte [eax]
lea edi, [esi + 0x20]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c179
cmp dword [edi], 0
je 0x1007c172
mov ecx, esi
call fcn.10072650
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1007c179
xor cl, cl
jmp 0x1007c179
or cl, 0xff
mov byte [ebx + ebp + 3], cl
add ebx, 4
movzx eax, cl
mov ecx, dword [esp + 0x34]
or dword [esp + 0x48], eax
inc ecx
mov dword [esp + 0x34], ecx
cmp ecx, dword [esi]
jl 0x1007c070
jmp 0x1007c2ca
xor edi, edi
mov dword [esp + 0x34], edi
test eax, eax
jle 0x1007c2ca
nop dword [eax + eax]
mov ecx, esi
call fcn.100727f0
cmp dword [esp + 0x24], 0x10
je 0x1007c1d0
mov ecx, esi
mov edi, eax
call fcn.100727f0
shl eax, 0x10
add eax, edi
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x4c]
mov edx, eax
and edx, dword [esp + 0x38]
test ecx, ecx
jns 0x1007c1e6
mov ecx, dword [esp + 0x58]
shl edx, cl
jmp 0x1007c1e8
shr edx, cl
mov ecx, dword [esp + 0x5c]
shr edx, cl
mov ecx, dword [esp + 0x28]
imul edx, dword [ecx*4 + 0x101f4dcc]
mov ecx, dword [ecx*4 + 0x101f4da8]
sar edx, cl
mov ecx, dword [esp + 0x50]
mov byte [ebx + ebp], dl
mov edx, eax
and edx, dword [esp + 0x10]
test ecx, ecx
jns 0x1007c21c
mov ecx, dword [esp + 0x60]
shl edx, cl
jmp 0x1007c21e
shr edx, cl
mov ecx, dword [esp + 0x64]
shr edx, cl
mov ecx, dword [esp + 0x2c]
imul edx, dword [ecx*4 + 0x101f4dcc]
mov ecx, dword [ecx*4 + 0x101f4da8]
sar edx, cl
mov ecx, dword [esp + 0x54]
mov byte [ebx + ebp + 1], dl
mov edx, eax
and edx, dword [esp + 0x40]
test ecx, ecx
jns 0x1007c253
mov ecx, dword [esp + 0x68]
shl edx, cl
jmp 0x1007c255
shr edx, cl
mov ecx, dword [esp + 0x6c]
shr edx, cl
mov ecx, dword [esp + 0x30]
imul edx, dword [ecx*4 + 0x101f4dcc]
mov ecx, dword [ecx*4 + 0x101f4da8]
sar edx, cl
mov ecx, dword [esp + 0x44]
mov byte [ebx + ebp + 2], dl
test ecx, ecx
je 0x1007c2ad
and eax, ecx
mov ecx, dword [esp + 0x18]
test ecx, ecx
jns 0x1007c28e
mov ecx, dword [esp + 0x70]
shl eax, cl
jmp 0x1007c290
shr eax, cl
mov ecx, dword [esp + 0x74]
shr eax, cl
mov ecx, dword [esp + 0x1c]
imul eax, dword [ecx*4 + 0x101f4dcc]
mov ecx, dword [ecx*4 + 0x101f4da8]
sar eax, cl
jmp 0x1007c2b2
mov eax, 0xff
or dword [esp + 0x48], eax
inc edi
mov byte [ebx + ebp + 3], al
add ebx, 4
mov dword [esp + 0x34], edi
cmp edi, dword [esi]
jl 0x1007c1b0
mov edx, dword [esp + 0x78]
test edx, edx
je 0x1007c310
cmp dword [esi + 0x10], 0
je 0x1007c30a
mov eax, dword [esi + 0xb0]
mov ecx, eax
sub ecx, dword [esi + 0xac]
cmp ecx, edx
jge 0x1007c30a
mov edi, dword [esi + 0x14]
mov dword [esi + 0xac], eax
mov eax, edx
sub eax, ecx
mov ecx, edi
push eax
push dword [esi + 0x1c]
call dword [0x1013f2d4]
call edi
add esp, 8
jmp 0x1007c310
add dword [esi + 0xac], edx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esi + 4]
inc eax
mov dword [esp + 0x3c], eax
mov edx, ecx
cmp eax, ecx
jl 0x1007c050
cmp dword [esp + 0x48], 0
jne 0x1007c34d
mov eax, dword [esi]
imul eax, ecx
lea eax, [eax*4 - 1]
test eax, eax
js 0x1007c34d
mov ecx, dword [esp + 0x20]
mov byte [ecx + eax], 0xff
sub eax, 4
jns 0x1007c341
mov edx, dword [esi + 4]
cmp dword [esp + 0x7c], 0
jle 0x1007c3be
xor edi, edi
mov dword [esp + 0x1c], edi
test edx, 0xfffffffe
jle 0x1007c3be
mov ecx, dword [esi]
sub edx, edi
dec edx
mov eax, ecx
imul eax, edi
xor edi, edi
imul edx, ecx
lea ebx, [eax*4]
lea edx, [edx*4]
add ebx, ebp
lea eax, [ecx*4]
add edx, ebp
test eax, eax
jle 0x1007c3aa
sub ebx, edx
mov al, byte [edx]
lea edx, [edx + 1]
mov cl, byte [edx + ebx - 1]
inc edi
mov byte [edx + ebx - 1], al
mov byte [edx - 1], cl
mov eax, dword [esi]
shl eax, 2
cmp edi, eax
jl 0x1007c390
mov edi, dword [esp + 0x1c]
mov edx, dword [esi + 4]
inc edi
mov eax, edx
mov dword [esp + 0x1c], edi
sar eax, 1
cmp edi, eax
jl 0x1007c362
mov eax, dword [esp + 0x80]
mov ecx, dword [esi]
pop edi
mov dword [eax], ecx
mov eax, ebp
mov ecx, dword [esp + 0x4a8]
mov edx, dword [esi + 4]
pop ebp
pop ebx
mov dword [ecx], edx
pop esi
add esp, 0x498
ret
push ebp
call fcn.1011b2ad
mov ecx, dword [0x10203278]
add esp, 4
mov eax, dword fs:[0x2c]
pop edi
mov eax, dword [eax + ecx*4]
pop ebp
pop ebx
pop esi
mov dword [eax + 0x10], str.bad_masks
xor eax, eax
add esp, 0x498
ret
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0x10], str.outofmem
xor eax, eax
add esp, 0x498
ret
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0x10], str.too_large
xor eax, eax
add esp, 0x498
ret
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0x10], str.bad_offset
xor eax, eax
add esp, 0x498
ret
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0x10], str.bad_header
xor eax, eax
add esp, 0x498
ret