Function at 0x101832c0
Capabilities:
Create thread

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x14]
push edi
mov edi, dword [esp + 0x14]
mov ebp, ecx
mov edx, 0xfffffffd
mov al, byte [ebp + 0xc]
mov ecx, 1
mov dword [esp + 0x14], ecx
mov byte [esp + 0x18], al
test edi, edi
je 0x101838e3
mov eax, dword [edi]
cmp eax, 0x1c
ja case.0x101832fa.16
xor ebx, ebx
mov bl, byte [eax + 0x10183930]
jmp dword [ebx*4 + 0x101838ec]
mov al, byte [edi + 8]
mov byte [esp + 0x18], al
mov edi, dword [edi + 4]
inc ecx
mov dword [esp + 0x14], ecx
jmp 0x101832e3
mov edi, dword [edi + 8]
or ecx, 0xffffffff
inc ecx
mov dword [esp + 0x14], ecx
jmp 0x101832e3
mov eax, dword [edi + 8]
test eax, eax
jl 0x1018387b
mov edi, dword [edi + 4]
inc ecx
mov dword [esp + 0x14], ecx
jmp 0x101832e3
cmp dword [edi + 8], edx
jne case.0x101832fa.16
mov eax, dword [edi + 4]
inc ecx
mov dword [esp + 0x14], ecx
mov edi, dword [eax + 4]
jmp 0x101832e3
test esi, esi
je 0x1018337a
mov al, byte [esi]
mov bl, byte [esi + 0xa]
mov cl, byte [esi + 0xd]
or al, 4
mov byte [esi], al
mov al, byte [esp + 0x20]
or bl, al
or cl, al
mov byte [esi + 0xa], bl
mov bl, byte [esi + 0xc]
mov byte [esi + 0xd], cl
mov cl, byte [esi + 0x85]
or bl, al
or cl, al
mov byte [esi + 0xc], bl
mov byte [esi + 0x85], cl
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x101838e3
mov edi, dword [edi + 4]
xor esi, esi
jmp 0x101832d3
test byte [edi + 0xc], 4
jne 0x10183773
mov ebx, dword [edi]
cmp ebx, 0x12
je 0x101833ab
cmp ebx, 0x15
jle 0x101833d8
cmp ebx, 0x19
jg 0x101833d8
mov ecx, dword [edi + 0x118]
cmp ecx, 0x40
ja 0x101837c9
mov eax, 1
xor edx, edx
call fcn.10190420
mov ecx, dword [ebp + 0x20]
and eax, ecx
mov ecx, dword [ebp + 0x24]
and edx, ecx
or eax, edx
jne 0x101837c9
cmp ebx, 0x12
je 0x101833e7
cmp ebx, 0x15
jle 0x1018340e
cmp ebx, 0x19
jg 0x1018340e
mov ecx, dword [edi + 0x118]
cmp ecx, 0x40
ja 0x1018340e
mov eax, 1
xor edx, edx
call fcn.10190420
mov ecx, dword [ebp + 0x20]
or ecx, eax
mov dword [ebp + 0x20], ecx
mov eax, dword [ebp + 0x24]
or eax, edx
mov dword [ebp + 0x24], eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
push ecx
push edx
push esi
push eax
mov ecx, ebp
call fcn.101832c0
cmp dword [edi], 0x11
je 0x1018343f
mov eax, dword [edi + 0x110]
test eax, eax
je 0x1018343f
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x101838e3
mov edi, dword [edi + 8]
mov edx, 0xfffffffd
jmp 0x101832d3
test esi, esi
je 0x101838e3
mov al, byte [esi]
mov bl, byte [esp + 0x18]
or al, 4
mov byte [esi], al
mov dl, byte [edi + 0xc]
xor eax, eax
test bl, bl
je 0x1018347d
mov ecx, dword [ebp + 4]
mov edi, eax
and edi, 0xff
mov ecx, dword [ecx]
mov cl, byte [ecx + edi + 0x104]
jmp 0x1018347f
mov cl, al
cmp cl, dl
jne 0x1018348a
mov cl, byte [esp + 0x20]
or byte [eax + esi], cl
inc eax
cmp eax, 0x100
jb 0x10183463
pop edi
pop esi
pop ebp
pop ebx
ret 0x10
mov eax, dword [esp + 0x1c]
test eax, eax
je case.0x101832fa.4
mov edx, dword [esp + 0x20]
mov edi, dword [eax]
mov ecx, edx
and ecx, 0xff
or edi, ecx
mov dword [eax], edi
jmp 0x101834b9
mov edx, dword [esp + 0x20]
test esi, esi
je 0x101838e3
cmp byte [esi], 0
jne 0x101834ef
mov eax, edx
mov ecx, 0x40
and eax, 0xff
mov edi, esi
mov dl, al
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
rep stosd dword es:[edi], eax
mov al, byte [esi]
pop edi
or al, 4
mov byte [esi], al
pop esi
pop ebp
pop ebx
ret 0x10
xor eax, eax
mov bl, byte [eax + esi]
or bl, dl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x100
jb 0x101834f1
mov al, byte [esi]
pop edi
or al, 4
mov byte [esi], al
pop esi
pop ebp
pop ebx
ret 0x10
test esi, esi
je 0x10183819
cmp byte [esi], 0
jne 0x10183543
mov ebp, dword [esp + 0x20]
mov ecx, 0x40
mov eax, ebp
mov edi, esi
and eax, 0xff
mov dl, al
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
rep stosd dword es:[edi], eax
or byte [esi], 4
jmp 0x1018381d
xor eax, eax
mov cl, byte [esp + 0x20]
mov bl, byte [eax + esi]
or bl, cl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x100
jb 0x10183545
mov al, byte [esi]
mov ebp, dword [esp + 0x20]
or al, 4
mov byte [esi], al
jmp 0x1018381d
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
push ebx
push edx
push esi
push eax
mov ecx, ebp
call fcn.101832c0
test esi, esi
je 0x101838e3
mov al, byte [esi]
or al, 4
mov byte [esi], al
xor eax, eax
mov ecx, dword [ebp + 0x28]
test ecx, 0x3ff
je 0x101835b8
mov edi, dword [ebp + 4]
mov edx, eax
and edx, 0xff
mov edi, dword [edi]
mov dx, word [edi + edx*2 + 0x204]
and edx, ecx
test edx, 0x3ff
jne 0x101835cd
test ch, 4
je 0x101835c1
cmp al, 0x5f
je 0x101835cd
mov dl, byte [eax + esi]
mov cl, bl
not cl
and dl, cl
mov byte [eax + esi], dl
inc eax
cmp eax, 0x100
jb 0x1018358e
pop edi
pop esi
pop ebp
pop ebx
ret 0x10
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
push ebx
push edx
push esi
push eax
mov ecx, ebp
call fcn.101832c0
test esi, esi
je 0x101838e3
mov al, byte [esi]
or al, 4
mov byte [esi], al
xor eax, eax
mov ecx, dword [ebp + 0x28]
test ecx, 0x3ff
je 0x1018362c
mov edi, dword [ebp + 4]
mov edx, eax
and edx, 0xff
mov edi, dword [edi]
mov dx, word [edi + edx*2 + 0x204]
and edx, ecx
test edx, 0x3ff
jne 0x10183635
test ch, 4
je 0x10183641
cmp al, 0x5f
jne 0x10183641
mov dl, byte [eax + esi]
mov cl, bl
not cl
and dl, cl
mov byte [eax + esi], dl
inc eax
cmp eax, 0x100
jb 0x10183602
pop edi
pop esi
pop ebp
pop ebx
ret 0x10
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x101838e3
mov ecx, dword [esp + 0x20]
mov edx, dword [eax]
and ecx, 0xff
pop edi
or edx, ecx
pop esi
pop ebp
mov dword [eax], edx
pop ebx
ret 0x10
test esi, esi
je 0x101838e3
mov al, byte [edi + 0x1d]
test al, al
mov al, byte [esi]
je 0x101836c8
or al, 4
xor ebx, ebx
mov byte [esi], al
mov dl, byte [ebp + 0xc]
mov eax, dword [ebp]
push edx
push eax
push edi
lea edx, [esp + 0x29]
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], bl
call fcn.10188680
lea ecx, [esp + 0x1c]
cmp ecx, eax
je 0x101836b8
mov dl, byte [esp + 0x20]
mov al, byte [ebx + esi]
or al, dl
mov byte [ebx + esi], al
inc ebx
cmp ebx, 0x100
jb 0x1018368a
pop edi
pop esi
pop ebp
pop ebx
ret 0x10
test al, al
jne 0x101836f7
mov eax, dword [esp + 0x20]
mov ecx, 0x40
and eax, 0xff
mov edi, esi
mov dl, al
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
rep stosd dword es:[edi], eax
mov al, byte [esi]
pop edi
or al, 4
mov byte [esi], al
pop esi
pop ebp
pop ebx
ret 0x10
xor eax, eax
mov cl, byte [esp + 0x20]
mov bl, byte [eax + esi]
or bl, cl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x100
jb 0x101836f9
mov al, byte [esi]
pop edi
or al, 4
mov byte [esi], al
pop esi
pop ebp
pop ebx
ret 0x10
test esi, esi
je 0x101838e3
mov al, byte [esi]
mov dl, byte [esp + 0x18]
or al, 4
xor ecx, ecx
mov byte [esi], al
test dl, dl
je 0x10183748
mov eax, dword [ebp + 4]
mov ebx, ecx
and ebx, 0xff
mov eax, dword [eax]
mov al, byte [eax + ebx + 0x104]
jmp 0x1018374a
mov al, cl
and eax, 0xff
mov bl, byte [eax + edi + 8]
test bl, bl
je 0x10183763
mov al, byte [esp + 0x20]
mov bl, byte [ecx + esi]
or bl, al
mov byte [ecx + esi], bl
inc ecx
cmp ecx, 0x100
jb 0x1018372e
pop edi
pop esi
pop ebp
pop ebx
ret 0x10
test esi, esi
mov dl, 3
je 0x1018379b
mov al, byte [esi]
or al, 4
mov byte [esi], al
xor eax, eax
test byte [edi + eax + 0xc], dl
je 0x10183793
mov cl, byte [esp + 0x20]
mov bl, byte [eax + esi]
or bl, cl
mov byte [eax + esi], bl
inc eax
cmp eax, 0xff
jbe 0x10183781
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x101838e3
test byte [edi + 0x10c], dl
je 0x101838e3
mov eax, dword [esp + 0x20]
mov edx, dword [ecx]
and eax, 0xff
pop edi
or edx, eax
pop esi
pop ebp
mov dword [ecx], edx
pop ebx
ret 0x10
test esi, esi
je 0x10183819
cmp byte [esi], 0
jne 0x101837f7
mov ebp, dword [esp + 0x20]
mov ecx, 0x40
mov eax, ebp
mov edi, esi
and eax, 0xff
mov dl, al
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
rep stosd dword es:[edi], eax
or byte [esi], 4
jmp 0x1018381d
xor eax, eax
mov cl, byte [esp + 0x20]
mov bl, byte [eax + esi]
or bl, cl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x100
jb 0x101837f9
mov al, byte [esi]
mov ebp, dword [esp + 0x20]
or al, 4
mov byte [esi], al
jmp 0x1018381d
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x101838e3
mov ecx, dword [eax]
and ebp, 0xff
pop edi
or ecx, ebp
pop esi
pop ebp
mov dword [eax], ecx
pop ebx
ret 0x10
test esi, esi
je 0x1018385d
mov bl, byte [esi]
mov eax, dword [esp + 0x20]
mov dl, byte [esi + 0xa]
mov cl, byte [esi + 0xd]
or bl, 4
or dl, al
or cl, al
mov byte [esi], bl
mov byte [esi + 0xa], dl
mov byte [esi + 0xd], cl
jmp 0x10183861
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x101838e3
mov edx, dword [ecx]
and eax, 0xff
pop edi
or edx, eax
pop esi
pop ebp
mov dword [ecx], edx
pop ebx
ret 0x10
test esi, esi
je 0x101838cb
cmp byte [esi], 0
jne 0x101838a9
mov ebp, dword [esp + 0x20]
mov ecx, 0x40
mov eax, ebp
mov edi, esi
and eax, 0xff
mov dl, al
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
rep stosd dword es:[edi], eax
or byte [esi], 4
jmp 0x101838cf
xor eax, eax
mov cl, byte [esp + 0x20]
mov bl, byte [eax + esi]
or bl, cl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x100
jb 0x101838ab
mov al, byte [esi]
mov ebp, dword [esp + 0x20]
or al, 4
mov byte [esi], al
jmp 0x101838cf
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x101838e3
mov ecx, dword [eax]
and ebp, 0xff
or ecx, ebp
mov dword [eax], ecx
pop edi
pop esi
pop ebp
pop ebx
ret 0x10