Function at 0x7d5f00
Capabilities:
Encode data using xor
Resolve function by parsing pe exports
Terminate process

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x108
mov eax, dword [0xbcbae0]
mov ebp, edx
mov esi, ecx
xor eax, esp
mov dword [esp + 0x104], eax
mov dword [esp + 0x9c], 0
mov edi, dword [ecx]
call fcn.007ebd10
mov ebx, 1
test ebp, ebp
je 0x7d8140
cmp byte [edi + 0x51], 0
jne 0x7d8140
cmp dword [esi + 0x24], 0
jne 0x7d8140
mov dword [esp + 8], eax
mov ecx, esi
mov edx, 0x15
push 0
push 0
push 0
call fcn.007f4a50
add esp, 0xc
test eax, eax
jne 0x7d8140
mov eax, dword [esp + 0x11c]
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
cmp byte [eax], 8
ja 0x7d6015
mov edx, dword [ebp + 0x30]
mov ecx, edi
call fcn.007c00f0
mov dword [ebp + 0x30], 0
and byte [ebp + 4], 0xfe
mov ecx, esi
mov edx, ebp
push 0
call fcn.007fd2b0
add esp, 4
cmp dword [esi + 0x24], 0
mov ebx, 1
jne 0x7d810f
cmp byte [edi + 0x51], 0
jne 0x7d810f
mov eax, dword [esp + 0x11c]
cmp byte [eax], 9
jne 0x7d6051
mov ecx, esi
mov edx, ebp
call fcn.00807380
mov ecx, esi
mov edx, ebp
call fcn.00807840
mov ebx, eax
test eax, eax
jne 0x7d810f
mov edx, dword [ebp + 4]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf0], 0
mov dword [esp + 0xec], 0
mov dword [esp + 0xe8], 0
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe0], 0
mov dword [esp + 0xdc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov eax, dword [ebp + 0x30]
mov dword [esp + 0xd0], eax
cmp dword [ebp + 0x34], 0
jne 0x7d642b
shr edx, 3
and edx, 1
mov dword [esp + 0x1c], edx
xor edx, edx
mov eax, dword [ecx]
mov dword [esp], ecx
cmp edx, eax
jge 0x7d644f
lea ebx, [edx + edx*8]
mov dword [esp + 4], edx
mov eax, dword [ecx + ebx*8 + 0x18]
mov edx, dword [ecx + ebx*8 + 0x1c]
test byte [ecx + ebx*8 + 0x2c], 8
mov dword [esp + 0xc], eax
je 0x7d614e
mov dword [esp + 0x18], edx
mov edx, dword [ecx + ebx*8 + 0x34]
mov ecx, dword [ebp + 0x24]
call fcn.007f21c0
mov edx, dword [esp + 0x18]
mov ecx, dword [esp]
test eax, eax
je 0x7d614e
test byte [edi + 0x4d], 0x20
jne 0x7d614e
lea eax, [ecx + ebx*8 + 0x2c]
and byte [eax], 0xd7
mov edx, dword [eax + 8]
mov ecx, dword [ebp + 0x24]
call fcn.00807d10
mov edx, dword [esp + 0x18]
mov ecx, dword [esp]
test edx, edx
jne 0x7d615b
mov eax, dword [esp + 4]
jmp 0x7d641e
mov eax, dword [esp + 0xc]
movsx ebx, word [eax + 0x2a]
mov eax, dword [edx + 0x1c]
mov eax, dword [eax]
cmp eax, ebx
je 0x7d63a1
mov ebp, ebx
mov ebx, fcn.00826bc0
movzx ecx, byte [0xbb1fcf]
mov edx, eax
imul ebx, ebx
and ebx, 3
cmp ebx, 1
seta al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7d6384
mov al, byte [0xbb1fcf]
cmp ebx, 1
mov ah, 1
seta cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb1fcf], ah
jne 0x7d619f
mov ecx, fcn.00826bc0
movzx ebx, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta ah
or ah, 2
xor ah, 7
movzx eax, ah
bt ebx, eax
jae 0x7d61f9
cmp ecx, 1
movzx ebx, byte [0xbb1fcf]
seta al
or al, 2
movzx eax, al
bt ebx, eax
jae 0x7d61dd
jmp 0x7d6384
cmp ecx, 1
movzx ebx, byte [0xbb1fcf]
seta al
or al, 2
movzx eax, al
bt ebx, eax
jb 0x7d6363
mov eax, fcn.00826bc0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
mov eax, dword [0xbb1fa0]
seta cl
or ecx, 0x84cb2682
add ecx, 0x200
mov ebx, ecx
xor eax, ecx
mov dword [esp + 8], ecx
shr ebx, 0x1f
mov dword [0xbb1fa0], eax
not eax
or ebx, ecx
imul ebx, eax
mov eax, dword [0xbb1fa4]
lea ecx, [ebx + ebx]
xor eax, ebx
shr ebx, 0x1e
mov dword [0xbb1fa4], eax
or ebx, ecx
not eax
imul eax, ebx
mov ebx, dword [0xbb1fa8]
lea ecx, [eax*4]
xor ebx, eax
shr eax, 0x1d
mov dword [0xbb1fa8], ebx
or eax, ecx
not ebx
imul ebx, eax
mov eax, dword [0xbb1fac]
lea ecx, [ebx*8]
xor eax, ebx
shr ebx, 0x1c
mov dword [0xbb1fac], eax
or ebx, ecx
not eax
imul eax, ebx
mov ebx, dword [0xbb1fb0]
mov ecx, eax
shl ecx, 4
xor ebx, eax
shr eax, 0x1b
mov dword [0xbb1fb0], ebx
or eax, ecx
not ebx
imul ebx, eax
mov eax, dword [0xbb1fb4]
mov ecx, ebx
shl ecx, 5
xor eax, ebx
shr ebx, 0x1a
mov dword [0xbb1fb4], eax
or ebx, ecx
not eax
imul eax, ebx
mov ebx, dword [0xbb1fb8]
mov ecx, eax
shl ecx, 6
xor ebx, eax
shr eax, 0x19
mov dword [0xbb1fb8], ebx
or eax, ecx
not ebx
imul ebx, eax
mov eax, dword [0xbb1fbc]
mov ecx, ebx
shl ecx, 7
xor eax, ebx
shr ebx, 0x18
mov dword [0xbb1fbc], eax
or ebx, ecx
not eax
imul eax, ebx
mov ebx, dword [0xbb1fc0]
mov ecx, eax
shl ecx, 8
xor ebx, eax
shr eax, 0x17
mov dword [0xbb1fc0], ebx
or eax, ecx
not ebx
imul ebx, eax
mov eax, dword [0xbb1fc4]
mov ecx, ebx
shl ecx, 9
xor eax, ebx
shr ebx, 0x16
or ebx, ecx
mov ecx, dword [esp + 8]
mov dword [0xbb1fc4], eax
not eax
imul eax, ebx
xor dword [0xbb1fc8], eax
mov al, 1
and cl, 7
shl al, cl
or byte [0xbb1fcf], al
mov eax, fcn.00826bc0
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 0xfe
seta cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb1fcf], al
push edx
mov eax, dword [esp + 0x10]
push dword [eax]
push ebp
push 0xbb1fa0
push esi
call fcn.00782570
add esp, 0x14
xor ebx, ebx
jmp 0x7d810f
test byte [edx + 4], 8
je 0x7d63ad
mov eax, dword [esp + 4]
jmp 0x7d641e
mov ebx, dword [esp + 4]
test ebx, ebx
jne 0x7d63cf
mov eax, dword [edx + 0x30]
test eax, eax
je 0x7d63cf
test byte [ebp + 6], 4
je 0x7d63cf
xor eax, eax
cmp dword [ecx], 1
je 0x7d641e
test byte [ecx + 0x74], 0xa
jne 0x7d641e
mov ecx, esi
mov edx, ebp
push dword [esp + 0x1c]
push ebx
call fcn.00807d80
add esp, 8
test eax, eax
je 0x7d63f6
cmp dword [esi + 0x24], 0
mov ebx, 0xffffffff
je 0x7d63f6
xor ebx, ebx
jmp 0x7d810f
cmp byte [edi + 0x51], 0
je 0x7d6403
xor ebx, ebx
jmp 0x7d810f
mov eax, dword [esp + 0x11c]
mov ecx, dword [ebp + 0x20]
cmp byte [eax], 9
jb 0x7d641c
mov eax, dword [ebp + 0x30]
mov dword [esp + 0xd0], eax
mov eax, ebx
inc eax
cmp dword [ebp + 0x34], 0
mov edx, eax
je 0x7d60ed
mov ecx, esi
mov edx, ebp
push dword [esp + 0x11c]
call fcn.00808320
add esp, 4
cmp dword [ebp + 0x38], 0
mov ebx, eax
je 0x7d8139
jmp 0x7d8140
cmp eax, 2
jl 0x7d6469
cmp word [edi + 0x4c], 0
js 0x7d6471
mov ecx, esi
mov edx, ebp
call fcn.00809780
mov ecx, dword [esp]
mov eax, dword [ecx]
test eax, eax
jle 0x7d6a2a
mov eax, 0x7c5860
mov edx, 3
xor ebx, ebx
not eax
and eax, 1
mov dword [esp + 0x24], eax
mov eax, fcn.00778070
sub edx, eax
mov dword [esp + 0x20], edx
lea edx, [ebx + ebx*8]
mov eax, dword [ecx + edx*8 + 0x40]
mov dword [esp + 4], edx
or eax, dword [ecx + edx*8 + 0x44]
jne 0x7d64e1
mov eax, dword [ecx + edx*8 + 0x10]
test eax, eax
je 0x7d64e1
mov dword [esp + 0xc], ebx
mov dword [esp + 0x18], eax
mov ebx, dword [esp]
mov eax, dword [esp + 4]
mov ecx, esi
mov edx, 0x14
push dword [ebx + eax*8 + 0xc]
mov ebx, dword [esp + 0x10]
push 0xc1f2cb
push dword [esp + 0x20]
call fcn.007f4a50
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
add esp, 0xc
mov eax, dword [ecx + edx*8 + 0x1c]
test eax, eax
je 0x7d6a21
mov ecx, ebp
mov dword [esp + 0x18], eax
call fcn.00809830
add dword [esi + 0xd0], eax
mov dword [esp + 0xc], ebx
test byte [edi + 0x4d], 0x10
jne 0x7d6537
mov ebx, dword [esp + 4]
mov eax, dword [esp]
mov edx, dword [esp + 0x18]
mov ecx, esi
mov eax, dword [eax + ebx*8 + 0x2c]
shr eax, 5
and eax, 1
push eax
mov eax, dword [esp + 4]
push dword [eax + ebx*8 + 0x34]
mov ebx, dword [esp + 0x14]
push dword [ebp + 0x24]
call fcn.00809870
add esp, 0xc
mov eax, dword [esi + 0xf0]
mov ecx, dword [esp]
mov edx, dword [esp + 4]
test ebx, ebx
mov dword [esp + 0x10], eax
mov eax, dword [ecx + edx*8 + 0x10]
mov dword [esi + 0xf0], eax
jne 0x7d6760
cmp dword [ecx], 1
je 0x7d6569
test byte [ecx + 0x74], 0xa
je 0x7d6760
mov edx, dword [esp + 0x24]
movzx ecx, byte [0xbb1fe3]
mov eax, edx
add eax, 0x7c5860
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7d66a1
mov al, byte [0xbb1fe3]
mov ecx, edx
mov ebx, edx
mov dl, 1
add ecx, 0x7c5860
sete cl
or cl, 4
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb1fe3], dl
mov edx, ebx
jne 0x7d6591
mov ecx, edx
movzx eax, al
add ecx, 0x7c5860
sete cl
or cl, 4
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7d65f2
mov eax, edx
movzx ecx, byte [0xbb1fe3]
add eax, 0x7c5860
sete al
or al, 4
movzx eax, al
bt ecx, eax
jae 0x7d65d2
jmp 0x7d66a1
mov eax, edx
movzx ecx, byte [0xbb1fe3]
mov ebx, edx
add eax, 0x7c5860
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7d6687
mov eax, ebx
xor ecx, ecx
add eax, 0x7c5860
mov eax, dword [0xbb1fd0]
sete cl
or ecx, 0x3cc5ccdc
add ecx, 0x400
xor eax, ecx
mov dword [0xbb1fd0], eax
not eax
mov edx, dword [0xbb1fd4]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb1fd4], edx
or eax, ebx
not edx
imul edx, eax
mov eax, dword [0xbb1fd8]
lea ebx, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb1fd8], eax
or edx, ebx
not eax
mov ebx, dword [esp + 0x24]
imul eax, edx
mov dl, 1
xor dword [0xbb1fdc], eax
shl dl, cl
or byte [0xbb1fe3], dl
mov eax, ebx
add eax, 0x7c5860
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb1fe3], al
mov ecx, dword [esp + 8]
call fcn.007f2430
mov dword [esp + 0x28], eax
inc eax
mov ebx, dword [esp]
mov ecx, dword [esp + 8]
mov edx, 0xd
mov dword [esp + 4], eax
mov eax, dword [esi + 0x2c]
inc eax
mov dword [esi + 0x2c], eax
mov dword [ebx + 0x24], eax
push dword [esp + 4]
push 0
push eax
call fcn.007c5800
add esp, 0xc
mov eax, dword [esp + 4]
lea ecx, [esp + 0x84]
mov edx, 0xd
mov ecx, ecx
mov dword [ebx + 0x20], eax
push dword [ebx + 0x24]
call fcn.007f24c0
add esp, 4
mov eax, dword [esp + 0x18]
push dword [eax + 0x10]
push 0xbb1fd0
push 1
push esi
call fcn.007f2440
add esp, 0x10
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x84]
mov ecx, esi
push eax
call fcn.007d5f00
add esp, 4
mov eax, dword [esp + 0x18]
mov ecx, dword [ebx + 0x18]
movzx eax, word [eax + 2]
mov word [ecx + 0x2e], ax
or byte [ebx + 0x30], 0x10
mov eax, dword [esp + 0x8c]
mov dword [ebx + 0x28], eax
mov edx, dword [ebx + 0x24]
mov ebx, dword [esp + 8]
mov ecx, ebx
call fcn.007f6140
mov edx, dword [esp + 0x28]
mov ecx, ebx
call fcn.007ebd40
jmp 0x7d69ef
lea eax, [ecx + edx*8 + 8]
mov ebx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x2c]
inc eax
mov dword [esi + 0x2c], eax
mov dword [ecx + edx*8 + 0x24], eax
mov ecx, dword [esp + 8]
mov edx, 0x45
push eax
push 0
call fcn.007c57e0
mov ecx, dword [esp + 8]
add esp, 8
mov dword [esp + 0x28], eax
inc eax
mov dword [ecx + ebx*8 + 0x20], eax
xor eax, eax
test byte [ecx + ebx*8 + 0x30], 8
jne 0x7d67b0
mov ecx, dword [esp + 8]
mov edx, 0x11
call fcn.007ebd30
mov ecx, dword [esp]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x14], eax
call fcn.008099b0
test eax, eax
je 0x7d67fd
mov ecx, dword [esp + 8]
mov edx, 0x62
push dword [eax + 0x2c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 4]
mov ebx, dword [esp + 8]
push dword [eax + ebx*8 + 0x34]
call fcn.007c57e0
add esp, 8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x14]
movzx eax, word [eax + 2]
mov word [ecx + 2], ax
jmp 0x7d69a1
mov ebx, dword [esp + 0x20]
movzx ecx, byte [0xbb2003]
mov eax, ebx
xor eax, fcn.00778070
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7d6951
mov al, byte [0xbb2003]
mov ecx, ebx
mov dl, 1
xor ecx, fcn.00778070
sete cl
not cl
add cl, 0x40
and cl, 7
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb2003], dl
jne 0x7d6829
mov ecx, ebx
movzx eax, al
xor ecx, fcn.00778070
sete cl
not cl
add cl, 0x40
and cl, 7
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7d6894
mov eax, ebx
movzx ecx, byte [0xbb2003]
xor eax, fcn.00778070
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt ecx, eax
jae 0x7d6870
jmp 0x7d6951
mov eax, ebx
movzx ecx, byte [0xbb2003]
xor eax, fcn.00778070
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7d6932
mov eax, ebx
xor ecx, ecx
xor eax, fcn.00778070
mov eax, dword [0xbb1ff0]
sete cl
xor ecx, 0xef984adf
add ecx, 0x840
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb1ff0], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb1ff4]
lea ebx, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb1ff4], eax
or ebx, edx
not eax
mov edx, dword [0xbb1ff8]
imul eax, ebx
lea ebx, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb1ff8], edx
or ebx, eax
not edx
mov al, 1
imul edx, ebx
mov ebx, dword [esp + 0x20]
shl al, cl
xor dword [0xbb1ffc], edx
or byte [0xbb2003], al
mov eax, ebx
xor eax, fcn.00778070
mov al, 0xfe
sete cl
not cl
add cl, 0x40
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb2003], al
lea ebx, [esp + 0x84]
mov eax, dword [esp]
mov edx, 0xc
mov ecx, ebx
mov ebx, dword [esp + 4]
push dword [eax + ebx*8 + 0x34]
call fcn.007f24c0
add esp, 4
mov ebx, dword [esp + 0x18]
push dword [ebx + 0x10]
push 0xbb1ff0
push 1
push esi
call fcn.007f2440
add esp, 0x10
lea eax, [esp + 0x84]
mov ecx, esi
mov edx, ebx
push eax
call fcn.007d5f00
add esp, 4
movzx eax, word [ebx + 2]
mov ecx, dword [esp]
mov edx, dword [esp + 4]
lea ebx, [ecx + edx*8 + 0x24]
mov ecx, dword [ecx + edx*8 + 0x18]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 8]
test edx, edx
mov word [ecx + 0x2e], ax
je 0x7d69cb
mov ecx, ebx
call fcn.007ebd40
mov eax, dword [esp + 0x18]
mov ecx, ebx
mov edx, 0x41
push dword [eax]
call fcn.007edd80
add esp, 4
mov edx, dword [esp + 0x28]
mov ecx, ebx
push eax
call fcn.007f24e0
add esp, 4
mov ecx, esi
call fcn.007f24f0
cmp byte [edi + 0x51], 0
mov ebx, dword [esp + 0xc]
je 0x7d6a07
xor ebx, ebx
jmp 0x7d810f
mov ecx, ebp
call fcn.00809830
sub dword [esi + 0xd0], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp]
mov dword [esi + 0xf0], eax
inc ebx
cmp ebx, dword [ecx]
jl 0x7d6491
mov ecx, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0x2c]
mov eax, dword [ebp + 4]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp + 0x24]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0xd0]
mov edx, eax
and eax, 9
and dl, 1
cmp eax, 1
mov byte [esp + 0x10], dl
mov dword [esp + 0x14], ecx
mov ecx, dword [ebp + 0x28]
mov byte [esp + 0xf8], dl
mov dword [esp + 0xc], ecx
jne 0x7d6aa1
mov edx, dword [esp + 0x18]
mov ecx, ebx
push 0xffffffffffffffff
call fcn.007f2030
add esp, 4
test eax, eax
jne 0x7d6aa1
cmp dword [ebp + 0x44], 0
jne 0x7d6aa1
and byte [ebp + 4], 0xfe
mov ecx, edi
mov edx, dword [esp + 0x18]
push 0
call fcn.007f4030
add esp, 4
mov dword [esp + 0xc], eax
mov dword [ebp + 0x28], eax
or byte [ebp + 4], 8
test ebx, ebx
mov dword [esp + 4], ebx
jne 0x7d6ab0
mov ebx, 0xffffffff
jmp 0x7d6b03
mov eax, dword [esp + 0x18]
mov ecx, esi
mov edx, ebx
push dword [eax]
push 0
call fcn.00809a50
add esp, 8
mov dword [esp + 0x2c], eax
mov eax, ebx
mov ebx, dword [esi + 0x28]
lea ecx, [ebx + 1]
mov dword [esi + 0x28], ecx
mov dword [esp + 0xd8], ebx
mov ecx, dword [eax]
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
lea eax, [ecx + edx + 1]
mov ecx, dword [esp + 8]
mov edx, 0x64
push 0xfffffffffffffff7
push dword [esp + 0x30]
push 0
push eax
push ebx
call fcn.007ebd50
add esp, 0x14
mov ebx, eax
mov eax, dword [esp + 0x11c]
mov dword [esp + 0xe4], ebx
cmp byte [eax], 0xc
jne 0x7d6b37
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 8]
mov edx, 0x64
push dword [eax]
mov eax, dword [esp + 0x120]
push dword [eax + 4]
call fcn.007c57e0
add esp, 8
mov ecx, esi
call fcn.007efdc0
test byte [ebp + 5], 0x40
jne 0x7d6b4a
mov word [ebp + 2], 0x140
mov ecx, esi
mov edx, ebp
mov dword [esp + 0x2c], eax
push eax
call fcn.00809ac0
add esp, 4
test ebx, ebx
js 0x7d6b7e
mov eax, dword [ebp + 8]
test eax, eax
jne 0x7d6b7e
mov ecx, dword [esp + 8]
mov edx, ebx
push 0x6f
call fcn.007f6b10
add esp, 4
or byte [esp + 0xf0], 1
test byte [ebp + 4], 1
mov dword [esp + 0x24], ebx
jne 0x7d6b8c
xor eax, eax
jmp 0x7d6bdd
mov ebx, dword [esi + 0x28]
mov ecx, esi
lea eax, [ebx + 1]
mov dword [esi + 0x28], eax
mov dword [esp + 0xfc], ebx
mov edx, dword [ebp + 0x1c]
push 0
push 0
call fcn.00809a50
add esp, 8
mov ecx, dword [esp + 8]
mov edx, 0x64
push 0xfffffffffffffff7
push eax
push 0
push 0
push ebx
call fcn.007ebd50
add esp, 0x14
mov ecx, dword [esp + 8]
mov edx, 8
mov dword [esp + 0x100], eax
call fcn.00782720
mov al, 3
mov byte [esp + 0xf9], al
cmp dword [esp + 0x1c], 0
mov eax, dword [esp + 0xc]
jne 0x7d6ded
test eax, eax
jne 0x7d6ded
movzx eax, byte [esp + 0x10]
mov ebx, 0x4000
mov ecx, dword [ebp + 0x44]
and ebx, dword [ebp + 4]
shl eax, 8
mov dword [esp + 0xc], ecx
or ebx, eax
test ecx, ecx
je 0x7d6c21
mov ecx, esi
mov edx, ebp
call fcn.00809c10
movsx eax, word [ebp + 2]
mov edx, dword [esp]
movzx ebx, bx
mov ecx, esi
push eax
push ebx
push dword [ebp + 0x1c]
push dword [esp + 0x10]
push dword [esp + 0x24]
call fcn.0080a3b0
add esp, 0x14
test eax, eax
jne 0x7d6c4d
xor ebx, ebx
jmp 0x7d810f
mov ecx, eax
mov dword [esp], eax
call fcn.0080b210
cmp ax, word [ebp + 2]
jge 0x7d6c61
mov word [ebp + 2], ax
cmp byte [esp + 0x10], 0
je 0x7d6c7b
mov ecx, dword [esp]
call fcn.0080b220
test eax, eax
je 0x7d6c7b
mov byte [esp + 0xf9], al
cmp dword [esp + 4], 0
je 0x7d6cbc
mov ebx, dword [esp]
mov ecx, ebx
call fcn.0080b230
mov ecx, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xd4], eax
call fcn.0080b240
mov dword [esp + 0xec], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x10]
cmp ecx, dword [eax]
jne 0x7d6cd0
mov dword [esp + 0xd0], 0
cmp dword [esp + 0x24], 0
js 0x7d6cd0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x24]
call fcn.007f3b50
cmp dword [esp + 0xc], 0
je 0x7d6da2
mov ecx, esi
call fcn.007efdc0
mov ecx, esi
mov ebx, eax
mov dword [esp + 0x28], eax
call fcn.007efdc0
mov ecx, esi
mov dword [esp + 4], eax
call fcn.007efdc0
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x2c]
mov ecx, esi
mov edx, ebp
inc eax
mov dword [esp + 0x10], eax
mov dword [esi + 0x2c], eax
push ebx
push eax
push dword [esp + 8]
call fcn.0080b260
add esp, 0xc
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0xc]
mov edx, 0xb
push ebx
push 0
call fcn.007c57e0
add esp, 8
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x28]
call fcn.007f04f0
mov ecx, esi
mov edx, ebp
mov dword [esp + 0xec], 0
lea eax, [esp + 0xf8]
push ebx
push dword [esp + 8]
push dword [esp + 0x124]
push eax
lea eax, [esp + 0xe0]
push eax
push 0xffffffffffffffff
call fcn.0080bdc0
add esp, 0x18
mov ebx, dword [esp + 8]
mov edx, dword [esp + 4]
mov ecx, ebx
call fcn.007f04f0
mov ecx, ebx
mov edx, 0x41
push dword [esp + 0x10]
call fcn.007edd80
add esp, 4
mov edx, dword [esp + 0xc]
mov ecx, ebx
jmp 0x7d7c72
mov ebx, dword [esp]
mov ecx, ebx
call fcn.0080c600
mov ecx, ebx
mov dword [esp + 4], eax
call fcn.0080c610
mov ecx, esi
mov edx, ebp
push dword [esp + 4]
push eax
push dword [esp + 0x124]
lea eax, [esp + 0x104]
push eax
lea eax, [esp + 0xe0]
push eax
push 0xffffffffffffffff
call fcn.0080bdc0
add esp, 0x18
mov ecx, ebx
call fcn.0080c620
jmp 0x7d7c77
test eax, eax
je 0x7d6ead
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax]
test ecx, ecx
jle 0x7d6e0d
add eax, 4
mov word [eax + 0x12], 0
add eax, 0x14
dec ecx
jg 0x7d6e01
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
test eax, eax
jle 0x7d6e2a
mov ecx, dword [esp + 0xc]
lea ecx, [ecx + 4]
mov word [ecx + 0x12], 0
add ecx, 0x14
dec eax
jg 0x7d6e1e
cmp word [ebp + 2], 0x43
jl 0x7d6e37
mov word [ebp + 2], 0x42
cmp dword [esp + 4], 0
mov dword [esp + 0x20], 0
je 0x7d6ebb
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 4]
mov ecx, dword [eax]
cmp ecx, dword [edx]
jne 0x7d6ebb
mov ebx, ecx
test ecx, ecx
jg 0x7d6e60
mov edx, dword [esp + 4]
jmp 0x7d6e92
mov edx, dword [esp + 4]
xor ecx, ecx
mov dword [esp + 0x10], ebx
lea ebx, [ecx*4]
inc ecx
lea eax, [ebx + ebx*4]
movzx ebx, byte [edx + eax + 0xc]
mov edx, dword [esp + 0xc]
and bl, 1
cmp ecx, dword [esp + 0x10]
mov byte [edx + eax + 0xc], bl
mov edx, dword [esp + 0xd0]
jne 0x7d6e6a
mov ecx, dword [esp + 0xc]
push 0xffffffffffffffff
call fcn.007f2030
add esp, 4
xor ecx, ecx
test eax, eax
sete cl
mov dword [esp + 0x20], ecx
jmp 0x7d6ebb
mov word [ebp + 2], 0
mov dword [esp + 0x20], 0
mov ecx, esi
call fcn.007efdc0
mov dword [esp + 0x24], eax
mov eax, dword [esp]
mov dword [esp + 0x80], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x64], esi
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x68], eax
lea eax, [esp + 0xa0]
mov dword [esp + 0x6c], eax
mov eax, dword [esi + 0x2c]
inc eax
test ecx, ecx
mov dword [esp + 0xb0], eax
jne 0x7d6f1e
xor eax, eax
jmp 0x7d6f20
mov eax, dword [ecx]
mov edx, dword [esp + 0x18]
lea ebx, [esp + 0x64]
mov dword [esp + 0xac], eax
mov dword [esp + 0xb8], ecx
mov ecx, ebx
call fcn.0080cc20
mov edx, dword [esp + 0xd0]
mov ecx, ebx
call fcn.0080cc20
cmp dword [esp + 0x28], 0
je 0x7d6f76
cmp dword [esp + 0xc], 0
je 0x7d6f69
mov ecx, esi
mov edx, ebp
call fcn.0080cc50
mov eax, dword [ebp + 0x24]
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x64]
call fcn.0080ccb0
mov eax, dword [esp + 0xc0]
mov dword [esp + 0xc4], eax
cmp dword [ebp + 0x28], 0
je 0x7d6f94
mov dword [esp + 0x10], 0
jmp 0x7d6fda
cmp dword [ebp + 0x2c], 0
je 0x7d6fa4
mov dword [esp + 0x10], 0
jmp 0x7d6fda
cmp dword [esp + 0xcc], 1
je 0x7d6fb8
mov dword [esp + 0x10], 0
jmp 0x7d6fda
mov eax, dword [esp + 0xc8]
mov ecx, edi
mov edx, dword [eax]
lea eax, [esp + 0x9c]
push eax
call fcn.0080cd00
add esp, 4
movzx eax, al
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0xcc]
test ecx, ecx
jle 0x7d7047
mov eax, dword [esp + 0x7c]
xor ebx, ebx
mov ecx, dword [esp + 0xc8]
mov edx, ebx
or eax, 0x20000
shl edx, 4
mov ecx, dword [ecx + edx]
mov dword [esp + 0x7c], eax
mov edx, dword [ecx + 0x14]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x64]
call fcn.0080cc20
mov eax, dword [esp + 4]
test byte [eax + 7], 1
je 0x7d702c
mov eax, dword [eax + 0x2c]
lea ecx, [esp + 0x64]
mov edx, dword [eax + 0x28]
call fcn.0080ccb0
mov eax, dword [esp + 0x7c]
mov ecx, 0xfffdffff
inc ebx
and eax, ecx
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x7c], eax
cmp ebx, ecx
jl 0x7d6feb
mov eax, dword [esi + 0x2c]
xor ebx, ebx
mov dword [esp + 4], ecx
mov dword [esp + 0xb4], eax
mov dword [esp + 0x1c], eax
cmp byte [edi + 0x51], 0
jne 0x7d810f
cmp dword [esp + 0xc], 0
je 0x7d7993
mov eax, dword [esi + 0x28]
mov edx, dword [esp + 0xc]
lea ecx, [eax + 1]
mov dword [esi + 0x28], ecx
mov dword [esp + 0xa4], eax
mov ecx, esi
push dword [esp + 0xc0]
push 0
call fcn.00809a50
add esp, 8
mov ecx, dword [esp + 8]
mov edx, 0x6f
push 0xfffffffffffffff7
mov dword [esp + 0x64], eax
push eax
push 0
push dword [esp + 0xb8]
push dword [esp + 0xb4]
call fcn.007ebd50
add esp, 0x14
mov dword [esp + 0x58], eax
mov eax, dword [esi + 0x2c]
lea ecx, [eax + 2]
mov dword [esp + 0x3c], eax
lea eax, [eax + 3]
mov dword [esp + 0x48], ecx
mov ecx, esi
mov dword [esp + 0x30], eax
mov dword [esi + 0x2c], eax
call fcn.007efdc0
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x2c]
mov ecx, esi
inc eax
mov dword [esp + 0x50], eax
mov dword [esi + 0x2c], eax
call fcn.007efdc0
mov edx, dword [esi + 0x2c]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x4c], eax
lea eax, [edx + 1]
mov dword [esp + 0x54], edx
mov dword [esp + 0x44], eax
mov eax, dword [ecx]
mov dword [esp + 0x5c], eax
lea eax, [eax + edx]
mov edx, 0x45
mov dword [esi + 0x2c], eax
add eax, dword [ecx]
mov ecx, dword [esp + 8]
mov dword [esi + 0x2c], eax
push dword [esp + 0x48]
push 0
call fcn.007c57e0
add esp, 8
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, 0x48
mov eax, dword [eax]
add eax, dword [esp + 0x54]
push eax
push dword [esp + 0x48]
push 0
call fcn.007c5800
add esp, 0xc
mov ecx, dword [esp + 8]
mov edx, 0xc
push dword [esp + 0x4c]
push dword [esp + 0x54]
call fcn.007c57e0
add esp, 8
mov eax, dword [esp + 0x20]
mov edx, dword [esp]
mov ecx, esi
shl eax, 9
or eax, 0x40
push 0
push eax
push 0
push dword [esp + 0x18]
push dword [esp + 0x24]
call fcn.0080a3b0
add esp, 0x14
test eax, eax
mov dword [esp + 0x38], eax
je 0x7d810f
mov ecx, dword [esp + 0x38]
call fcn.0080b230
mov ecx, dword [esp + 0xc]
mov ebx, 0
mov dword [esp], 0
mov dword [esp + 0x10], 0
cmp eax, dword [ecx]
je 0x7d7633
mov edx, 0x7bf7e0
movzx ecx, byte [0xbb2013]
imul edx, edx
and edx, 3
cmp edx, 2
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7d72e5
mov al, byte [0xbb2013]
cmp edx, 2
mov ah, 1
setne cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb2013], ah
jne 0x7d71f5
mov ecx, 0x7bf7e0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
setne dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d724f
cmp ecx, 2
movzx edx, byte [0xbb2013]
setne al
or al, 4
movzx eax, al
bt edx, eax
jae 0x7d7233
jmp 0x7d72e5
cmp ecx, 2
movzx edx, byte [0xbb2013]
setne al
or al, 4
movzx eax, al
bt edx, eax
jb 0x7d72c4
mov eax, 0x7bf7e0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbb2004]
sete cl
xor ecx, 0x61966c71
or ecx, 0x104
xor eax, ecx
mov dword [0xbb2004], eax
not eax
mov edx, dword [0xbb2008]
imul eax, ecx
and cl, 5
lea ebx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb2008], edx
or ebx, eax
not edx
mov al, 1
imul edx, ebx
shl al, cl
xor dword [0xbb200c], edx
or byte [0xbb2013], al
mov eax, 0x7bf7e0
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
setne cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb2013], al
mov edx, fcn.00799c70
xor eax, eax
movzx ebx, byte [0xbb2023]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x7d7438
mov al, byte [0xbb2023]
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ebx + ecx*2]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb2023], ah
jne 0x7d7319
mov ecx, fcn.00799c70
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
not ebx
lea edx, [ebx + edx*2]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d738e
xor eax, eax
cmp ecx, 2
movzx ebx, byte [0xbb2023]
sete al
mov edx, eax
not edx
lea eax, [edx + eax*2]
and al, 7
movzx eax, al
bt ebx, eax
jae 0x7d7369
jmp 0x7d7438
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb2023]
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7d740e
mov eax, fcn.00799c70
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 0x229b4427
lea ecx, [eax + ecx*2 + 0x3b0]
mov eax, dword [0xbb2014]
xor eax, ecx
mov dword [0xbb2014], eax
not eax
mov edx, dword [0xbb2018]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb2018], edx
or ebx, eax
not edx
mov al, 1
imul edx, ebx
shl al, cl
xor dword [0xbb201c], edx
or byte [0xbb2023], al
mov eax, fcn.00799c70
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
not eax
lea ecx, [eax + ecx*2]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb2023], al
cmp byte [esp + 0xf8], 0
jne 0x7d7449
mov edx, 0xbb2014
jmp 0x7d745a
test byte [ebp + 4], 1
mov eax, 0xbb2004
mov edx, 0xbb2014
cmove edx, eax
mov ecx, esi
call fcn.0080cfe0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc0]
mov eax, dword [eax]
test ecx, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 4], eax
mov dword [esp + 0x1c], eax
jle 0x7d74c4
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0xbc]
xor edx, edx
mov dword [esp + 0x34], eax
mov dword [esp], ecx
mov dword [esp + 0x1c], ecx
lea eax, [edx + edx*2]
mov ecx, dword [esp]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x10]
cmp dword [eax + ebx*8 + 0xc], ecx
mov eax, 0
setge al
inc edx
add ecx, eax
add dword [esp + 0x1c], eax
cmp edx, dword [esp + 0x14]
mov dword [esp], ecx
jne 0x7d7496
mov edx, dword [esp + 0x1c]
mov ecx, esi
call fcn.007eee80
mov edx, dword [esp + 0xc]
mov ecx, esi
push 0
push 0
mov ebx, eax
mov dword [esp + 0x3c], eax
push eax
call fcn.007eeeb0
add esp, 0xc
mov eax, dword [esp + 0xc0]
test eax, eax
mov dword [esp + 0x14], eax
jle 0x7d756f
xor eax, eax
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 4]
mov dword [esp + 0x10], eax
lea eax, [eax + eax*2]
cmp dword [ecx + eax*8 + 0xc], edx
mov dword [esp], ecx
jl 0x7d7564
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 4]
lea ecx, [edx + ecx]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp]
mov edx, dword [ecx + eax*8]
mov ecx, dword [esp + 8]
push dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x18]
push dword [eax + ebx*8 + 8]
mov eax, dword [esp + 8]
mov ebx, dword [esp + 0x1c]
push dword [eax + ebx*8 + 4]
call fcn.007f0be0
add esp, 0xc
mov eax, dword [esp + 0xc0]
inc dword [esp + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
inc eax
cmp eax, dword [esp + 0x14]
jl 0x7d74f9
mov ecx, esi
call fcn.007f1720
mov ecx, dword [esp + 8]
mov dword [esp], eax
mov edx, 0x5b
push eax
push dword [esp + 0x20]
mov ebx, dword [esp + 0x3c]
push ebx
call fcn.007c5800
add esp, 0xc
mov ebx, dword [esp]
mov ecx, dword [esp + 8]
mov edx, 0x82
push ebx
push dword [esp + 0xa8]
call fcn.007c57e0
add esp, 8
mov ecx, esi
mov edx, ebx
call fcn.007f0bc0
mov edx, dword [esp + 0x34]
mov ecx, esi
push dword [esp + 0x1c]
call fcn.007ef1d0
add esp, 4
mov ecx, dword [esp + 0x38]
call fcn.0080c620
mov ebx, dword [esi + 0x28]
mov ecx, esi
lea eax, [ebx + 1]
mov dword [esi + 0x28], eax
mov dword [esp + 0xa8], ebx
call fcn.007f1720
mov ecx, dword [esp + 8]
mov edx, 0x72
push dword [esp + 0x1c]
mov dword [esp + 4], eax
push eax
mov dword [esp + 0x18], ebx
push ebx
call fcn.007c5800
add esp, 0xc
mov ecx, dword [esp + 8]
mov edx, 0x23
push dword [esp + 0x24]
push dword [esp + 0xa8]
call fcn.007c57e0
add esp, 8
mov ebx, 1
mov byte [esp + 0xa1], 1
cmp dword [esp + 0x20], 0
je 0x7d7683
test byte [edi + 0x4c], 4
jne 0x7d7683
test ebx, ebx
jne 0x7d7668
mov ecx, dword [esp + 0x38]
call fcn.0080d180
test eax, eax
jne 0x7d7668
mov ecx, dword [esp + 8]
call fcn.007f2430
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0
jmp 0x7d76c4
mov dword [esp + 0xd0], 0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xe4]
call fcn.007f3b50
mov ecx, dword [esp + 8]
call fcn.007f2430
test ebx, ebx
mov dword [esp + 0x14], eax
jne 0x7d769e
mov dword [esp + 4], 0
jmp 0x7d76c4
mov ecx, dword [esp + 8]
mov edx, 0x7d
push dword [esp + 0x10]
push dword [esp + 4]
push dword [esp + 0xac]
call fcn.007c5800
add esp, 0xc
mov al, 1
mov dword [esp + 4], eax
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x5c]
inc dword [esp + 0x3c]
cmp dword [edx], 0
lea eax, [ecx + eax + 1]
mov dword [esp], eax
jle 0x7d7731
xor ebx, ebx
cmp byte [esp + 4], 0
je 0x7d7708
mov eax, dword [esp]
mov ecx, dword [esp + 8]
mov edx, 0x59
lea eax, [ebx + eax]
push eax
push ebx
push dword [esp + 0x18]
call fcn.007c5800
add esp, 0xc
jmp 0x7d7728
mov eax, dword [esp]
mov byte [esp + 0xa0], 1
lea ecx, [ebx + ebx*4]
mov edx, dword [edx + ecx*4 + 4]
mov ecx, esi
lea eax, [ebx + eax]
push eax
call fcn.007ebed0
add esp, 4
mov edx, dword [esp + 0xc]
inc ebx
cmp ebx, dword [edx]
jl 0x7d76e2
mov ecx, dword [esp + 0x60]
mov ebx, edx
mov dword [esp + 0xc], edx
call fcn.00804e40
mov ecx, dword [esp + 8]
mov edx, 0x56
push 0xfffffffffffffff7
push eax
push dword [ebx]
mov ebx, dword [esp + 0xc]
push ebx
push dword [esp + 0x54]
call fcn.007ebd50
add esp, 0x14
mov ebx, dword [esp + 8]
mov ecx, ebx
call fcn.007f2430
mov dword [esp + 0x10], eax
inc eax
mov ecx, ebx
mov edx, 0x10
push eax
push 0
push eax
call fcn.007c5800
add esp, 0xc
mov eax, dword [esp + 0xc]
mov edx, dword [esp]
mov ecx, esi
push dword [eax]
push dword [esp + 0x48]
call fcn.0080d190
add esp, 8
mov ecx, ebx
mov edx, 0xc
push dword [esp + 0x40]
push dword [esp + 0x34]
call fcn.007c57e0
add esp, 8
mov ecx, ebx
mov edx, 0x30
push dword [esp + 0x24]
push dword [esp + 0x4c]
call fcn.007c57e0
add esp, 8
mov ecx, ebx
mov edx, 0xc
push dword [esp + 0x4c]
push dword [esp + 0x54]
call fcn.007c57e0
add esp, 8
mov edx, dword [esp + 0x10]
mov ecx, ebx
call fcn.007ebd40
mov ebx, dword [esp + 0x3c]
lea eax, [esp + 0xa0]
mov ecx, esi
mov edx, ebx
push eax
call fcn.0080d1b0
add esp, 4
mov ecx, dword [esp + 8]
mov edx, 0x45
push ebx
push 1
call fcn.007c57e0
add esp, 8
cmp byte [esp + 4], 0
je 0x7d783a
mov ecx, dword [esp + 8]
mov edx, 3
push dword [esp + 0x14]
push dword [esp + 0xa8]
call fcn.007c57e0
add esp, 8
jmp 0x7d7850
mov ecx, dword [esp + 0x38]
call fcn.0080c620
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x58]
call fcn.007f3b50
mov ebx, dword [esp + 8]
mov edx, 0xc
mov ecx, ebx
push dword [esp + 0x40]
push dword [esp + 0x34]
call fcn.007c57e0
add esp, 8
mov edx, dword [esp + 0x24]
mov ecx, ebx
call fcn.007ebf10
mov ecx, ebx
call fcn.007f2430
mov dword [esp + 4], eax
mov ecx, ebx
mov edx, 0x45
push dword [esp + 0x48]
push 1
call fcn.007c57e0
add esp, 8
mov ecx, ebx
mov edx, 0x41
push dword [esp + 0x30]
call fcn.007edd80
add esp, 4
mov edx, dword [esp + 0x40]
mov ecx, ebx
call fcn.007f04f0
mov ecx, ebx
call fcn.007f2430
mov dword [esp], eax
lea eax, [eax + 2]
mov ecx, ebx
mov edx, 0x30
push eax
push dword [esp + 0x40]
call fcn.007c57e0
add esp, 8
mov ecx, ebx
mov edx, 0x41
push dword [esp + 0x30]
call fcn.007edd80
add esp, 4
lea edx, [esp + 0xa0]
mov ecx, esi
call fcn.0080d420
mov eax, dword [esp]
inc eax
mov dword [esp], eax
push 0x10
push eax
push dword [esp + 0x30]
push esi
call fcn.007f0850
add esp, 0x10
lea eax, [esp + 0xf8]
mov ecx, esi
mov edx, ebp
push dword [esp + 4]
push dword [esp + 4]
push dword [esp + 0x124]
push eax
lea eax, [esp + 0xe0]
push eax
push 0xffffffffffffffff
call fcn.0080bdc0
add esp, 0x18
mov ecx, ebx
mov edx, 0x41
push dword [esp + 0x30]
call fcn.007edd80
add esp, 4
mov edx, dword [esp + 0x4c]
mov ecx, ebx
call fcn.007f04f0
mov ecx, esi
lea edx, [esp + 0xa0]
call fcn.0080d480
mov ecx, ebx
mov edx, 0x45
push dword [esp + 0x3c]
push 0
call fcn.007c57e0
add esp, 8
mov ecx, ebx
mov edx, 0x41
push dword [esp + 0x50]
call fcn.007edd80
add esp, 4
jmp 0x7d7c6a
lea edx, [esp + 0xa0]
mov ecx, ebp
call fcn.0080d7c0
test eax, eax
mov dword [esp + 0xc], eax
je 0x7d7b03
mov ebx, dword [esp + 0xc]
mov ecx, dword [esi]
mov edx, dword [ebx + 0x48]
call fcn.007825f0
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x28]
mov ecx, esi
mov edx, dword [esp + 0x10]
mov dword [esp + 4], eax
lea eax, [eax + 1]
mov dword [esi + 0x28], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x14], eax
call fcn.007f31f0
mov edx, dword [esp + 0x10]
mov ecx, esi
push dword [ebx]
push 0
push dword [ebx + 0x1c]
call fcn.007ec020
add esp, 0xc
cmp byte [ebx + 0x24], 0
mov dword [esp], 0
jns 0x7d7a0c
mov ecx, dword [esp + 0xc]
call fcn.00787030
mov dword [esp], eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
test eax, eax
je 0x7d7a48
test byte [eax + 0x38], 4
jne 0x7d7a43
movzx ecx, word [eax + 0x30]
mov edx, dword [esp + 0xc]
cmp cx, word [edx + 0x30]
jge 0x7d7a43
cmp dword [eax + 0x24], 0
jne 0x7d7a43
cmp dword [esp], 0
je 0x7d7a40
mov edx, dword [esp]
cmp cx, word [edx + 0x30]
jge 0x7d7a43
mov dword [esp], eax
mov eax, dword [eax + 0x14]
jmp 0x7d7a13
cmp dword [esp], 0
jne 0x7d7a6f
mov ecx, dword [esp + 8]
mov edx, 0x60
push 1
push dword [esp + 0x14]
push dword [esp + 0x1c]
push dword [esp + 0x10]
call fcn.007826e0
add esp, 0x10
jmp 0x7d7ab9
mov edx, dword [esp]
mov ecx, esi
mov eax, dword [edx + 0x2c]
mov dword [esp + 0x14], eax
call fcn.007ec120
mov ecx, dword [esp + 8]
mov ebx, eax
mov edx, 0x60
push 1
push dword [esp + 0x14]
push dword [esp + 0x1c]
push dword [esp + 0x10]
call fcn.007826e0
add esp, 0x10
test ebx, ebx
je 0x7d7ab9
mov ecx, dword [esp + 8]
mov edx, 0xffffffff
push 0xfffffffffffffff7
push ebx
call fcn.00782820
add esp, 8
mov eax, dword [esp + 0xc8]
mov ebx, dword [esp + 8]
mov edx, 0x5c
mov ecx, ebx
push dword [eax + 8]
push dword [esp + 8]
call fcn.007c57e0
add esp, 8
mov ecx, ebx
mov edx, 0x74
push dword [esp + 4]
call fcn.007edd80
add esp, 4
mov edx, dword [esp + 0xc]
mov ecx, esi
push dword [esp]
call fcn.0080d810
add esp, 4
jmp 0x7d7c30
xor ebx, ebx
cmp dword [esp + 0xc4], 0
mov dword [esp + 0x20], 0
je 0x7d7b8d
cmp dword [esp + 4], 0
mov eax, 0
mov dword [esp + 0x20], 0
jle 0x7d7b5f
mov ecx, dword [esp + 0xc8]
xor eax, eax
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
mov edx, eax
shl edx, 4
mov ecx, dword [ecx + edx]
test byte [ecx + 7], 1
jne 0x7d7b58
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + edx + 4]
test byte [ecx + 4], 0x20
jne 0x7d7b5f
inc eax
cmp eax, dword [esp + 4]
jl 0x7d7b38
cmp eax, dword [esp + 4]
jne 0x7d7b8d
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 8]
mov edx, 0x45
inc eax
mov dword [esp + 0x1c], eax
mov dword [esi + 0x2c], eax
push eax
push 0
call fcn.007c57e0
add esp, 8
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
lea edx, [esp + 0xa0]
mov ecx, esi
call fcn.0080d480
movzx eax, word [esp + 0x10]
mov edx, dword [esp]
mov ecx, esi
push 0
push eax
push 0
push dword [esp + 0xa8]
push dword [esp + 0x24]
call fcn.0080a3b0
add esp, 0x14
test eax, eax
mov dword [esp], eax
je 0x7d810f
mov ebx, dword [esp + 0x20]
lea eax, [esp + 0xa0]
mov ecx, esi
mov edx, ebx
push eax
call fcn.0080d1b0
add esp, 4
test ebx, ebx
je 0x7d7bfb
mov ecx, dword [esp + 8]
mov edx, 0x45
push dword [esp + 0x20]
push 1
call fcn.007c57e0
add esp, 8
mov ecx, dword [esp]
call fcn.0080b230
test eax, eax
jle 0x7d7c1a
mov ecx, dword [esp]
call fcn.0080c600
mov ecx, dword [esp + 8]
mov edx, eax
call fcn.007ebf10
mov ecx, dword [esp]
call fcn.0080c620
lea edx, [esp + 0xa0]
mov ecx, esi
call fcn.0080d420
mov dword [esp + 0xd0], 0
push 0x10
mov ebx, dword [esp + 0x28]
push ebx
push dword [esp + 0x30]
push esi
call fcn.007f0850
add esp, 0x10
mov ecx, esi
mov edx, ebp
push ebx
push ebx
push dword [esp + 0x124]
push 0
push 0
push 0xffffffffffffffff
call fcn.0080bdc0
add esp, 0x18
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x24]
call fcn.007f04f0
cmp byte [esp + 0xf9], 3
jne 0x7d7df5
mov edx, fcn.007be4c0
xor eax, eax
movzx ebx, byte [0xbb2033]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x7d7de9
mov al, byte [0xbb2033]
xor ecx, ecx
cmp edx, 1
mov ah, 1
seta cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb2033], ah
jne 0x7d7cbb
mov ecx, fcn.007be4c0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
mov ebx, edx
xor ebx, 5
lea edx, [ebx + edx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d7d36
xor eax, eax
cmp ecx, 1
movzx ebx, byte [0xbb2033]
seta al
mov edx, eax
xor edx, 5
lea eax, [edx + eax*2 + 4]
and al, 7
movzx eax, al
bt ebx, eax
jae 0x7d7d0f
jmp 0x7d7de9
xor eax, eax
cmp ecx, 1
movzx edx, byte [0xbb2033]
seta al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7d7dbd
mov eax, fcn.007be4c0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 0x4b0843dd
lea ecx, [eax + ecx*2 + 0x804]
mov eax, dword [0xbb2024]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb2024], eax
not eax
imul edx, eax
mov eax, dword [0xbb2028]
lea ebx, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb2028], eax
or ebx, edx
not eax
mov dl, 1
imul eax, ebx
shl dl, cl
xor dword [0xbb202c], eax
or byte [0xbb2033], dl
mov eax, fcn.007be4c0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 5
lea ecx, [eax + ecx*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb2033], al
mov ecx, esi
mov edx, 0xbb2024
call fcn.0080cfe0
cmp dword [esp + 0xd0], 0
je 0x7d80f9
mov edx, fcn.007c5940
xor eax, eax
movzx ebx, byte [0xbb205b]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x7d7f9f
mov al, byte [0xbb205b]
xor ecx, ecx
cmp edx, 1
mov ah, 1
seta cl
mov ebx, ecx
xor ebx, 3
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb205b], ah
jne 0x7d7e33
mov ecx, fcn.007c5940
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
mov ebx, edx
xor ebx, 3
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d7ea0
xor eax, eax
cmp ecx, 1
movzx ebx, byte [0xbb205b]
seta al
mov edx, eax
xor edx, 3
lea eax, [edx + eax*2]
bt ebx, eax
jae 0x7d7e7f
jmp 0x7d7f9f
xor eax, eax
cmp ecx, 1
movzx edx, byte [0xbb205b]
seta al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x7d7f77
mov eax, fcn.007c5940
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 0x36165e83
lea ecx, [eax + ecx*2 + 0x270]
mov eax, dword [0xbb2040]
xor eax, ecx
mov dword [0xbb2040], eax
not eax
mov edx, dword [0xbb2044]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb2044], edx
or ebx, eax
not edx
mov eax, dword [0xbb2048]
imul edx, ebx
lea ebx, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb2048], eax
or ebx, edx
not eax
mov edx, dword [0xbb204c]
imul eax, ebx
lea ebx, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb204c], edx
or ebx, eax
not edx
mov eax, dword [0xbb2050]
imul edx, ebx
mov ebx, edx
shl ebx, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb2050], eax
or edx, ebx
not eax
imul eax, edx
mov dl, 1
xor dword [0xbb2054], eax
shl dl, cl
or byte [0xbb205b], dl
mov eax, fcn.007c5940
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 3
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb205b], al
mov edx, fcn.007fd310
movzx ecx, byte [0xbb206b]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7d80bc
mov al, byte [0xbb206b]
cmp edx, 1
mov ah, 1
seta cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb206b], ah
jne 0x7d7fca
mov ecx, fcn.007fd310
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d8024
cmp ecx, 1
movzx edx, byte [0xbb206b]
seta al
or al, 4
movzx eax, al
bt edx, eax
jae 0x7d8008
jmp 0x7d80bc
cmp ecx, 1
movzx edx, byte [0xbb206b]
seta al
or al, 4
movzx eax, al
bt edx, eax
jb 0x7d809b
mov eax, fcn.007fd310
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
mov eax, dword [0xbb205c]
seta cl
or ecx, 0x6b8b2f50
add ecx, 0x5c
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb205c], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb2060]
lea ebx, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb2060], eax
or ebx, edx
not eax
mov dl, 1
imul eax, ebx
shl dl, cl
xor dword [0xbb2064], eax
or byte [0xbb206b], dl
mov eax, fcn.007fd310
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 0xfe
seta cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb206b], al
cmp dword [esp + 0xd4], 0
mov eax, 0xbb2040
mov edx, 0xbb205c
mov ecx, esi
cmovg edx, eax
call fcn.0080cfe0
lea eax, [esp + 0xd0]
mov ecx, esi
mov edx, ebp
push dword [esp + 0x11c]
mov ebx, dword [esp + 0x1c]
push dword [ebx]
push eax
call fcn.0080dc10
add esp, 0xc
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x2c]
call fcn.007f04f0
xor ebx, ebx
cmp dword [esi + 0x24], 0
setg bl
mov edx, dword [esp + 0x9c]
mov ecx, edi
call fcn.007c00f0
mov edx, dword [esp + 0xbc]
mov ecx, edi
call fcn.00774f10
mov edx, dword [esp + 0xc8]
mov ecx, edi
call fcn.00774f10
mov ecx, esi
call fcn.00809770
mov ecx, dword [esp + 0x104]
xor ecx, esp
call fcn.00980459
mov eax, ebx
add esp, 0x108
pop esi
pop edi
pop ebx
pop ebp
ret