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

Disassembly:
sub esp, 0x4a0
mov dword [esp + 0x78], edx
lea edx, [esp + 0x7c]
push esi
mov esi, ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x9c], 0xff
call fcn.10036650
test eax, eax
je 0x10036b0c
mov eax, dword [esi + 4]
mov dword [esp + 0x78], eax
cdq
xor eax, edx
sub eax, edx
mov dword [esi + 4], eax
cmp eax, 0x1000000
jbe 0x10036b16
mov ecx, dword [0x102c23c0]
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.too_large
xor eax, eax
pop esi
add esp, 0x4a0
ret
cmp dword [esi], 0x1000000
ja 0x10036af3
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x9c]
push ebx
push ebp
mov ebp, dword [esp + 0x8c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], edx
mov dword [esp + 0x54], ebp
push edi
cmp eax, 0xc
jne 0x10036ba5
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x1c], ebx
cmp ebx, 0x18
jge 0x10036bc6
mov ecx, ebp
mov eax, 0x55555556
sub ecx, edx
sub ecx, 0x18
imul ecx
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jmp 0x10036bbe
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x1c], ecx
cmp ecx, 0x10
jge 0x10036bc6
mov ebx, ebp
sub ebx, edx
sub ebx, eax
sar ebx, 2
mov dword [esp + 0x20], ebx
test ebx, ebx
jne 0x10036c3f
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 0x10037a03
cmp ebp, ecx
jl 0x100379dd
mov eax, ebp
sub eax, ecx
cmp eax, 0x400
jg 0x100379dd
test eax, eax
je 0x10036c3f
jns 0x10036c0d
mov eax, dword [esi + 0xb0]
jmp 0x10036c39
cmp dword [esi + 0x10], 0
je 0x10036c37
mov edi, dword [esi + 0xb0]
mov ecx, edi
sub ecx, edx
cmp ecx, eax
jge 0x10036c37
sub eax, ecx
mov dword [esi + 0xac], edi
push eax
push dword [esi + 0x1c]
mov eax, dword [esi + 0x14]
call eax
add esp, 8
jmp 0x10036c3f
add eax, edx
mov dword [esi + 0xac], eax
cmp dword [esp + 0x1c], 0x18
mov ecx, dword [esp + 0x18]
jne 0x10036c59
cmp ecx, 0xff000000
jne 0x10036c59
mov eax, 3
jmp 0x10036c63
xor eax, eax
test ecx, ecx
setne al
add eax, 3
mov dword [esi + 8], eax
mov edi, dword [esi]
mov ebx, dword [esi + 4]
test edi, edi
js 0x100379b7
jne 0x10036c7e
lea ecx, [edi*4]
jmp 0x10036c9e
mov eax, accept
cdq
idiv edi
cmp eax, 4
jl 0x100379b7
lea ecx, [edi*4]
test ecx, ecx
js 0x100379b7
test ebx, ebx
js 0x100379b7
je 0x10036cb8
mov eax, accept
cdq
idiv ebx
cmp ecx, eax
jg 0x100379b7
push 0
push ebx
mov edx, edi
mov ecx, 4
call fcn.1002d3f0
add esp, 8
test eax, eax
je 0x10037991
imul edi, ebx
shl edi, 2
push edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ebx, eax
add esp, 4
mov dword [esp + 0x30], ebx
test ebx, ebx
je 0x10037991
xor edi, edi
cmp dword [esp + 0x1c], 0x10
jge 0x100372ad
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1003727d
cmp eax, 0x100
jg 0x1003727d
xor edx, edx
mov dword [esp + 0x14], edx
test eax, eax
jle 0x10036e52
mov eax, dword [esi + 0xac]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x3c]
mov ecx, dword [esi + 0xb0]
cmp eax, ecx
jae 0x10036d46
mov bl, byte [eax]
mov byte [esp + 0x13], bl
mov ebx, dword [esp + 0x20]
jmp 0x10036d69
cmp dword [esi + 0x20], 0
je 0x10036d88
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov edx, dword [esp + 0x14]
mov cl, byte [eax]
mov byte [esp + 0x13], cl
mov ecx, dword [esi + 0xb0]
inc eax
lea ebp, [edx*4]
mov dl, byte [esp + 0x13]
mov dword [esi + 0xac], eax
mov byte [esp + ebp + 0xb2], dl
cmp eax, ecx
jae 0x10036d97
jmp 0x10036db2
lea ebp, [edx*4]
mov byte [esp + ebp + 0xb2], 0
cmp dword [esi + 0x20], 0
mov ecx, ebp
je 0x10036dd1
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov ecx, dword [esi + 0xb0]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
mov byte [esp + ebp + 0xb1], dl
cmp eax, ecx
jae 0x10036dd9
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x10036df9
mov byte [esp + ecx + 0xb1], 0
cmp dword [esi + 0x20], 0
je 0x10036df7
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x10036df9
xor cl, cl
mov byte [esp + ebp + 0xb0], cl
cmp edi, 0xc
je 0x10036e2f
cmp eax, dword [esi + 0xb0]
jae 0x10036e16
inc eax
mov dword [esi + 0xac], eax
jmp 0x10036e2f
cmp dword [esi + 0x20], 0
je 0x10036e2f
mov ecx, esi
call fcn.1002df30
inc dword [esi + 0xac]
mov eax, dword [esi + 0xac]
mov edx, dword [esp + 0x14]
inc edx
mov byte [esp + ebp + 0xb3], 0xff
mov dword [esp + 0x14], edx
cmp edx, ebx
jl 0x10036d30
mov ebx, dword [esp + 0x30]
xor edi, edi
mov ebp, dword [esp + 0x58]
xor eax, eax
cmp dword [esp + 0x3c], 0xc
setne al
add eax, 3
imul eax, dword [esp + 0x20]
sub ebp, eax
sub ebp, dword [esp + 0x48]
sub ebp, dword [esp + 0x3c]
je 0x10036eb6
test ebp, ebp
jns 0x10036e82
mov eax, dword [esi + 0xb0]
mov dword [esi + 0xac], eax
jmp 0x10036eb6
cmp dword [esi + 0x10], 0
je 0x10036eb0
mov ecx, dword [esi + 0xb0]
mov eax, ecx
sub eax, dword [esi + 0xac]
cmp eax, ebp
jge 0x10036eb0
sub ebp, eax
mov dword [esi + 0xac], ecx
mov eax, dword [esi + 0x14]
push ebp
push dword [esi + 0x1c]
call eax
add esp, 8
jmp 0x10036eb6
add dword [esi + 0xac], ebp
mov edx, dword [esp + 0x1c]
cmp edx, 1
jne 0x10036ec9
mov eax, dword [esi]
add eax, 7
shr eax, 3
jmp 0x10036ee0
cmp edx, 4
jne 0x10036ed5
mov eax, dword [esi]
inc eax
shr eax, 1
jmp 0x10036ee0
cmp edx, 8
jne 0x1003724d
mov eax, dword [esi]
mov ecx, dword [esi + 4]
neg eax
and eax, 3
xor ebp, ebp
cmp edx, 1
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], ebp
mov edx, ecx
jne 0x100370a7
test ecx, ecx
jle 0x1003789b
nop word [eax + eax]
mov eax, dword [esi + 0xac]
mov ecx, 7
mov dword [esp + 0x18], ecx
cmp eax, dword [esi + 0xb0]
jae 0x10036f32
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x10036f56
cmp dword [esi + 0x20], 0
je 0x10036f54
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov ecx, dword [esp + 0x18]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x10036f56
xor dl, dl
movzx eax, dl
mov edx, dword [esi]
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], 0
test edx, edx
jle 0x10037054
mov ebp, edx
sar eax, cl
and eax, 1
lea ecx, [eax*4]
movzx eax, byte [esp + ecx + 0xb0]
mov byte [edi + ebx], al
movzx eax, byte [esp + ecx + 0xb1]
mov byte [edi + ebx + 1], al
movzx eax, byte [esp + ecx + 0xb2]
mov byte [edi + ebx + 2], al
mov eax, dword [esp + 0x14]
inc eax
mov byte [edi + ebx + 3], 0xff
add edi, 4
mov dword [esp + 0x14], eax
cmp eax, edx
je 0x10037050
mov ecx, dword [esp + 0x18]
sub ecx, 1
mov dword [esp + 0x18], ecx
jns 0x10037040
mov eax, dword [esi + 0xac]
mov dword [esp + 0x18], 7
cmp eax, dword [esi + 0xb0]
jae 0x10036ffc
mov cl, byte [eax]
mov edx, ebp
inc eax
mov dword [esi + 0xac], eax
movzx eax, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
jmp 0x10037042
cmp dword [esi + 0x20], 0
je 0x1003702b
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
mov edx, dword [esi]
movzx eax, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
jmp 0x10037042
xor cl, cl
mov edx, ebp
movzx eax, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
jmp 0x10037042
mov edx, ebp
cmp eax, edx
mov ebp, edx
mov eax, dword [esp + 0x28]
jl 0x10036f71
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x10037090
cmp dword [esi + 0x10], 0
je 0x1003708a
mov edx, dword [esi + 0xb0]
mov ecx, edx
sub ecx, dword [esi + 0xac]
cmp ecx, eax
jge 0x1003708a
sub eax, ecx
mov dword [esi + 0xac], edx
push eax
push dword [esi + 0x1c]
mov eax, dword [esi + 0x14]
call eax
add esp, 8
jmp 0x10037090
add dword [esi + 0xac], eax
mov ecx, dword [esi + 4]
inc ebp
mov dword [esp + 0x24], ebp
mov edx, ecx
cmp ebp, ecx
jl 0x10036f10
jmp 0x1003789b
test ecx, ecx
jle 0x1003789b
nop
mov ecx, dword [esi]
mov dword [esp + 0x14], 0
test ecx, ecx
jle 0x100371fa
mov edx, dword [esi + 0xac]
cmp edx, dword [esi + 0xb0]
jae 0x100370db
mov al, byte [edx]
inc edx
mov dword [esi + 0xac], edx
jmp 0x10037107
cmp dword [esi + 0x20], 0
je 0x10037105
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
lea edx, [eax + 1]
mov byte [esp + 0x13], cl
mov ecx, dword [esi]
mov al, byte [esp + 0x13]
mov dword [esi + 0xac], edx
jmp 0x10037107
xor al, al
cmp dword [esp + 0x1c], 4
movzx ebp, al
mov dword [esp + 0x28], 0
jne 0x10037125
mov eax, ebp
and eax, 0xf
shr ebp, 4
mov dword [esp + 0x28], eax
movzx eax, byte [esp + ebp*4 + 0xb0]
mov byte [edi + ebx], al
movzx eax, byte [esp + ebp*4 + 0xb1]
mov byte [edi + ebx + 1], al
movzx eax, byte [esp + ebp*4 + 0xb2]
mov byte [edi + ebx + 2], al
mov eax, dword [esp + 0x14]
mov byte [edi + ebx + 3], 0xff
inc eax
add edi, 4
cmp eax, ecx
je 0x100371f2
cmp dword [esp + 0x1c], 8
jne 0x100371ae
cmp edx, dword [esi + 0xb0]
jae 0x10037184
mov al, byte [edx]
mov byte [esp + 0x13], al
lea eax, [edx + 1]
mov dl, byte [esp + 0x13]
mov dword [esi + 0xac], eax
movzx edx, dl
jmp 0x100371b2
cmp dword [esi + 0x20], 0
je 0x100371a7
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
mov ecx, dword [esi]
movzx edx, dl
jmp 0x100371b2
xor dl, dl
movzx edx, dl
jmp 0x100371b2
mov edx, dword [esp + 0x28]
movzx eax, byte [esp + edx*4 + 0xb0]
mov ebp, ecx
mov byte [edi + ebx], al
movzx eax, byte [esp + edx*4 + 0xb1]
mov byte [edi + ebx + 1], al
movzx eax, byte [esp + edx*4 + 0xb2]
mov byte [edi + ebx + 2], al
mov eax, dword [esp + 0x14]
add eax, 2
mov byte [edi + ebx + 3], 0xff
add edi, 4
mov dword [esp + 0x14], eax
cmp eax, ebp
jl 0x100370c2
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + 0x24]
test eax, eax
je 0x10037236
cmp dword [esi + 0x10], 0
je 0x10037230
mov edx, dword [esi + 0xb0]
mov ecx, edx
sub ecx, dword [esi + 0xac]
cmp ecx, eax
jge 0x10037230
sub eax, ecx
mov dword [esi + 0xac], edx
push eax
push dword [esi + 0x1c]
mov eax, dword [esi + 0x14]
call eax
mov eax, dword [esp + 0x34]
add esp, 8
jmp 0x10037236
add dword [esi + 0xac], eax
mov ecx, dword [esi + 4]
inc ebp
mov dword [esp + 0x24], ebp
mov edx, ecx
cmp ebp, ecx
jl 0x100370b0
jmp 0x1003789b
push ebx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov ecx, dword [0x102c23c0]
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 + 0xc], str.bad_bpp
xor eax, eax
add esp, 0x4a0
ret
push ebx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov ecx, dword [0x102c23c0]
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 + 0xc], str.invalid
xor eax, eax
add esp, 0x4a0
ret
sub ebp, dword [esp + 0x48]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x28], edi
mov dword [esp + 0x20], edi
sub ebp, dword [esp + 0x3c]
je 0x10037344
test ebp, ebp
jns 0x10037311
mov eax, dword [esi + 0xb0]
mov dword [esi + 0xac], eax
jmp 0x10037344
cmp dword [esi + 0x10], edi
je 0x1003733e
mov ecx, dword [esi + 0xb0]
mov eax, ecx
sub eax, dword [esi + 0xac]
cmp eax, ebp
jge 0x1003733e
sub ebp, eax
mov dword [esi + 0xac], ecx
mov eax, dword [esi + 0x14]
push ebp
push dword [esi + 0x1c]
call eax
add esp, 8
jmp 0x10037344
add dword [esi + 0xac], ebp
mov ebp, dword [esp + 0x1c]
cmp ebp, 0x18
jne 0x10037354
mov eax, dword [esi]
lea eax, [eax + eax*2]
jmp 0x10037361
cmp ebp, 0x10
jne 0x1003735f
mov eax, dword [esi]
add eax, eax
jmp 0x10037361
xor eax, eax
neg eax
and eax, 3
mov dword [esp + 0x80], eax
cmp ebp, 0x18
jne 0x10037381
mov dword [esp + 0x20], 1
xor eax, eax
jmp 0x10037564
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
cmp ebp, 0x20
jne 0x100373c2
cmp edx, 0xff
jne 0x100373c2
cmp eax, 0xff00
jne 0x100373c2
cmp ecx, 0xff0000
jne 0x100373c2
cmp dword [esp + 0x18], 0xff000000
jne 0x100373da
mov dword [esp + 0x20], 2
xor eax, eax
jmp 0x10037564
test ecx, ecx
je 0x10037961
test eax, eax
je 0x10037961
test edx, edx
je 0x10037961
call fcn.10036570
sub eax, 7
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x34]
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 + 0x38]
movzx eax, al
mov dword [esp + 0x50], eax
call fcn.10036570
sub eax, 7
mov dword [esp + 0x54], 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 + 0x40]
movzx eax, al
mov dword [esp + 0x2c], eax
call fcn.10036570
sub eax, 7
mov dword [esp + 0x5c], 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, dword [esp + 0x18]
movzx eax, al
mov dword [esp + 0x14], eax
call fcn.10036570
sub eax, 7
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
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
cmp dword [esp + 0x50], 8
movzx eax, al
mov dword [esp + 0x58], eax
ja 0x10037961
cmp dword [esp + 0x2c], 8
ja 0x10037961
cmp dword [esp + 0x14], 8
ja 0x10037961
cmp eax, 8
ja 0x10037961
mov ecx, dword [esi + 4]
mov edx, ecx
mov dword [esp + 0x30], edi
test ecx, ecx
jle 0x1003789b
mov ecx, dword [esp + 0x4c]
neg ecx
mov dword [esp + 0x60], ecx
mov ecx, 8
sub ecx, dword [esp + 0x50]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x54]
neg ecx
mov dword [esp + 0x68], ecx
mov ecx, 8
sub ecx, dword [esp + 0x2c]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x5c]
neg ecx
mov dword [esp + 0x70], ecx
mov ecx, 8
sub ecx, dword [esp + 0x14]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x24]
neg ecx
mov dword [esp + 0x78], ecx
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x7c], ecx
nop
cmp dword [esp + 0x20], 0
mov eax, dword [esi]
je 0x100376ed
xor ebp, ebp
test eax, eax
jle 0x10037840
nop word [eax + eax]
mov eax, dword [esi + 0xac]
mov ecx, dword [esi + 0xb0]
cmp eax, ecx
jb 0x10037619
cmp dword [esi + 0x20], 0
je 0x1003762c
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov ecx, dword [esi + 0xb0]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
mov byte [edi + ebx + 2], dl
cmp eax, ecx
jae 0x10037631
jmp 0x1003764a
mov byte [ebx + edi + 2], 0
cmp dword [esi + 0x20], 0
je 0x10037666
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov ecx, dword [esi + 0xb0]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
mov byte [edi + ebx + 1], dl
cmp eax, ecx
jae 0x1003766b
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1003768b
mov byte [ebx + edi + 1], 0
cmp dword [esi + 0x20], 0
je 0x10037689
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x1003768b
xor cl, cl
cmp dword [esp + 0x20], 2
mov byte [edi + ebx], cl
jne 0x100376ca
cmp eax, dword [esi + 0xb0]
jae 0x100376a8
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x100376cd
cmp dword [esi + 0x20], 0
je 0x100376c6
mov ecx, esi
call fcn.1002df30
mov eax, dword [esi + 0xac]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xac], eax
jmp 0x100376cd
xor cl, cl
jmp 0x100376cd
or cl, 0xff
movzx eax, cl
inc ebp
or dword [esp + 0x44], eax
mov byte [edi + ebx + 3], cl
add edi, 4
cmp ebp, dword [esi]
jl 0x100375f0
mov dword [esp + 0x28], edi
jmp 0x10037840
mov dword [esp + 0x3c], 0
test eax, eax
jle 0x10037844
nop dword [eax]
mov ecx, esi
call fcn.1002e0b0
cmp ebp, 0x10
jne 0x10037710
mov ebp, eax
jmp 0x10037724
mov ecx, esi
mov edi, eax
call fcn.1002e0b0
mov ebp, eax
shl ebp, 0x10
add ebp, edi
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x4c]
mov edx, ebp
and edx, dword [esp + 0x34]
mov eax, edx
mov dword [esp + 0x48], ebp
shr eax, cl
mov ecx, dword [esp + 0x60]
shl edx, cl
cmp dword [esp + 0x4c], 0
mov ecx, dword [esp + 0x64]
cmovge edx, eax
mov eax, dword [esp + 0x50]
shr edx, cl
imul edx, dword [eax*4 + 0x10255b2c]
mov ecx, dword [eax*4 + 0x10255bf8]
sar edx, cl
mov ecx, dword [esp + 0x54]
mov byte [edi + ebx], dl
mov edx, ebp
and edx, dword [esp + 0x38]
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x68]
shl edx, cl
cmp dword [esp + 0x54], 0
mov ecx, dword [esp + 0x6c]
cmovge edx, eax
mov eax, dword [esp + 0x2c]
shr edx, cl
imul edx, dword [eax*4 + 0x10255b2c]
mov ecx, dword [eax*4 + 0x10255bf8]
sar edx, cl
mov byte [edi + ebx + 1], dl
mov edx, ebp
and edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x5c]
mov eax, edx
mov ecx, ebp
shr eax, cl
mov ecx, dword [esp + 0x70]
shl edx, cl
test ebp, ebp
mov ecx, dword [esp + 0x74]
cmovns edx, eax
mov eax, dword [esp + 0x14]
shr edx, cl
imul edx, dword [eax*4 + 0x10255b2c]
mov ecx, dword [eax*4 + 0x10255bf8]
mov eax, dword [esp + 0x18]
sar edx, cl
mov byte [edi + ebx + 2], dl
test eax, eax
je 0x10037817
mov edx, dword [esp + 0x48]
mov ebp, dword [esp + 0x24]
and edx, eax
mov eax, edx
mov ecx, ebp
shr eax, cl
mov ecx, dword [esp + 0x78]
shl edx, cl
test ebp, ebp
mov ecx, dword [esp + 0x7c]
cmovns edx, eax
mov eax, dword [esp + 0x58]
shr edx, cl
imul edx, dword [eax*4 + 0x10255b2c]
mov ecx, dword [eax*4 + 0x10255bf8]
sar edx, cl
jmp 0x1003781c
mov edx, 0xff
mov eax, dword [esp + 0x3c]
or dword [esp + 0x44], edx
inc eax
mov ebp, dword [esp + 0x1c]
mov byte [edi + ebx + 3], dl
add edi, 4
mov dword [esp + 0x28], edi
mov dword [esp + 0x3c], eax
cmp eax, dword [esi]
jl 0x10037700
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x80]
test edx, edx
je 0x10037885
cmp dword [esi + 0x10], 0
je 0x1003787f
mov eax, dword [esi + 0xb0]
mov ecx, eax
sub ecx, dword [esi + 0xac]
cmp ecx, edx
jge 0x1003787f
mov dword [esi + 0xac], eax
mov eax, edx
sub eax, ecx
push eax
push dword [esi + 0x1c]
mov eax, dword [esi + 0x14]
call eax
add esp, 8
jmp 0x10037885
add dword [esi + 0xac], edx
mov eax, dword [esp + 0x30]
mov ecx, dword [esi + 4]
inc eax
mov dword [esp + 0x30], eax
mov edx, ecx
cmp eax, ecx
jl 0x100375d0
cmp dword [esp + 0x44], 0
jne 0x100378be
mov eax, dword [esi]
imul eax, ecx
lea eax, [eax*4 - 1]
test eax, eax
js 0x100378be
mov byte [eax + ebx], 0xff
sub eax, 4
jns 0x100378b2
mov edx, dword [esi + 4]
cmp dword [esp + 0x84], 0
jle 0x10037930
xor edi, edi
mov ecx, edx
mov dword [esp + 0x30], edi
test ecx, 0xfffffffe
jle 0x10037930
mov eax, dword [esi]
sub ecx, edi
dec ecx
mov ebp, eax
imul ecx, eax
imul ebp, edi
xor edi, edi
shl eax, 2
shl ecx, 2
shl ebp, 2
lea edx, [ecx + ebx]
test eax, eax
jle 0x1003791a
sub ebp, ecx
nop dword [eax]
mov al, byte [edx]
lea edx, [edx + 1]
mov cl, byte [edx + ebp - 1]
inc edi
mov byte [edx + ebp - 1], al
mov byte [edx - 1], cl
mov eax, dword [esi]
shl eax, 2
cmp edi, eax
jl 0x10037900
mov edx, dword [esi + 4]
mov ecx, edx
mov edi, dword [esp + 0x30]
mov eax, ecx
inc edi
sar eax, 1
mov dword [esp + 0x30], edi
cmp edi, eax
jl 0x100378d8
mov ecx, dword [esp + 0x88]
mov eax, dword [esi]
mov dword [ecx], eax
mov eax, dword [esp + 0x4b4]
mov ecx, dword [esp + 0x4b8]
mov dword [eax], edx
test ecx, ecx
je 0x10037954
mov eax, dword [esi + 8]
mov dword [ecx], eax
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x4a0
ret
push ebx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov ecx, dword [0x102c23c0]
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 + 0xc], str.bad_masks
xor eax, eax
add esp, 0x4a0
ret
mov ecx, dword [0x102c23c0]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0xc], str.outofmem
xor eax, eax
add esp, 0x4a0
ret
mov ecx, dword [0x102c23c0]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0xc], str.too_large
xor eax, eax
add esp, 0x4a0
ret
mov ecx, dword [0x102c23c0]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0xc], str.bad_offset
xor eax, eax
add esp, 0x4a0
ret
mov ecx, dword [0x102c23c0]
mov eax, dword fs:[0x2c]
pop edi
pop ebp
pop ebx
mov eax, dword [eax + ecx*4]
pop esi
mov dword [eax + 0xc], str.bad_header
xor eax, eax
add esp, 0x4a0
ret