Function at 0x644700
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x84
mov ebx, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x6480b0
mov esi, dword fs:[0]
mov dword [ebp - 0x18], esi
mov dword fs:[0], eax
mov dword [ebp - 0x20], ecx
mov eax, dword [ecx + 0x14]
test eax, eax
je 0x6447de
mov dword [ebp - 0x30], eax
lea ecx, [eax + 3]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x10], 2
mov dword [ebp - 0x38], ecx
call fcn.0053e080
mov ebx, dword [ebp - 0x20]
lea edi, [ebx + 4]
push dword [ebp - 0x38]
push 0
push eax
mov dword [ebp - 0x34], eax
call fcn.0077d260
add esp, 0xc
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x24], eax
cmp eax, 0x10
mov eax, dword [ebx + 4]
mov esi, edi
mov dword [ebp - 0x2c], eax
cmovae esi, eax
push dword [ebx + 0x14]
push esi
mov ebx, dword [ebp - 0x34]
push ebx
call fcn.0077cce0
add esp, 0xc
mov eax, dword [ebp + 0x10]
test al, 2
jne 0x64482c
mov ecx, esi
mov edx, 0x20
push dword [ebp - 0x30]
call fcn.005f6db0
add esp, 4
test eax, eax
je 0x644899
sub eax, esi
cmp eax, 0xffffffff
je 0x644899
mov eax, dword [ebp - 0x34]
lea edi, [eax + 1]
mov byte [eax], 0x22
mov al, 1
mov dword [ebp - 0x3c], eax
jmp 0x6448a3
test dl, 1
jne 0x644859
call fcn.00647f90
lea edi, [eax + 4]
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x18], 0
mov ecx, dword [eax + 4]
cmp dword [eax + 0x18], 0x10
cmovae edi, ecx
cmp byte [0xb53738], 0
cmovne edi, ecx
lea ecx, [ebx + 4]
mov esi, dword [eax + 0x14]
cmp esi, 0xf
ja 0x644dad
movups xmm0, xmmword [edi]
movups xmmword [ecx], xmm0
mov ebx, 0xf
jmp 0x644fe3
mov ecx, ebx
cmp byte [0xb53780], 0
mov eax, dword [ebp - 0x2c]
cmovne edi, eax
cmp byte [0xb532c1], 0
cmovne edi, eax
cmp dword [ebp - 0x24], 0x10
cmovae edi, eax
mov dword [ebp - 0x3c], 0
mov esi, edi
mov edi, ebx
jmp 0x6448a3
lea ecx, [ebx + 4]
mov dword [ebx + 0x18], 0xf
mov dword [ebx + 0x14], 6
movzx eax, byte [0xb28797]
cmp al, 0x6c
je 0x644fa4
mov dl, 0x3b
nop dword [eax + eax]
mov al, 0xc8
lock cmpxchg byte [0xb28797], dl
je 0x644f71
cmp al, 0x6c
jne 0x644880
jmp 0x644fa4
mov dword [ebp - 0x3c], 0
mov edi, dword [ebp - 0x34]
movsx ecx, byte [esi]
cmp ecx, 0x2f
sete al
movzx edx, byte [esi + 1]
mov ah, cl
xor ah, 0x5c
mov dh, dl
xor dh, 0x5c
or dh, ah
sete bl
or bl, al
cmp dl, 0x3a
jne 0x6448cf
call fcn.00647ff0
mov edx, eax
jmp 0x6448d1
xor edx, edx
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 0xf
mov byte [ebp - 0x64], 0
mov dword [ebp - 0x68], 0x79b7a0
test cl, 1
sete al
or bl, al
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x28], edx
je 0x644905
xor ebx, ebx
test dl, dl
jne 0x644955
jmp 0x64497c
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x10], 3
lea ecx, [ebp - 0x68]
call fcn.00645120
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x50]
lea edx, [eax + 1]
cmp ecx, 0x10
lea esi, [ebp - 0x63]
cmovae esi, edx
cmp byte [esi], 0x3a
mov edi, dword [ebp - 0x24]
jne 0x644946
cmp ecx, 0x10
lea ecx, [ebp - 0x64]
cmovb eax, ecx
movsx ecx, byte [eax]
call fcn.00647ff0
mov ebx, eax
jmp 0x644948
xor ebx, ebx
mov ecx, dword [ebp + 0x10]
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
test dl, dl
je 0x64497c
test cl, 1
je 0x64495e
cmp dl, bl
je 0x64497c
movsx ecx, byte [esi]
mov dword [ebp - 0x2c], ebx
mov ebx, edx
call fcn.00647ff0
mov edx, ebx
mov ebx, dword [ebp - 0x2c]
mov ecx, dword [ebp + 0x10]
mov byte [edi], al
mov byte [edi + 1], 0x3a
add edi, 2
xor eax, eax
test cl, 1
mov dword [ebp - 0x24], edi
je 0x6449c3
cmp dl, bl
je 0x6449c3
mov dword [ebp - 0x2c], ebx
mov byte [ebp - 0x84], dl
mov word [ebp - 0x83], 0x3a
mov dword [ebp - 0x10], 3
lea eax, [ebp - 0x84]
push eax
call sub.KERNEL32.dll_SetCurrentDirectoryA
lea ecx, [ebp - 0x68]
call fcn.00645120
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x2c], eax
xor eax, eax
test dl, dl
setne al
lea ebx, [esi + eax*2]
mov eax, dword [ebp - 0x54]
test eax, eax
je 0x644ac5
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x50]
lea edx, [ecx + 1]
cmp esi, 0x10
mov dword [0xb28868], 0x1443d2ed
lea edi, [ebp - 0x63]
cmovae edi, edx
cmp byte [edi], 0x3a
jne 0x644a34
cmp eax, 2
mov edx, 2
cmovb edx, eax
cmp esi, 0x10
lea esi, [ebp - 0x64]
cmovae esi, ecx
sub eax, edx
mov dword [ebp - 0x54], eax
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add edx, esi
push eax
push edx
push esi
call fcn.0077cce0
add esp, 0xc
mov dword [ebp - 0x10], 4
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x6c], 0xf
mov byte [ebp - 0x80], 0
mov dword [ebp - 0x84], 0x799e70
mov dword [ebp - 0x10], 4
lea ecx, [ebp - 0x84]
mov dword [ebp - 0x28], ebx
mov edx, ebx
push eax
call fcn.005c3b40
add esp, 4
mov dword [ebp - 0x10], 5
lea eax, [ebp - 0x68]
lea ecx, [ebp - 0x84]
push eax
call fcn.005d6700
test eax, eax
mov edi, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x28]
je 0x644d8d
mov eax, dword [ebp - 0x6c]
cmp eax, 0x10
jb 0x644ac5
mov ecx, dword [ebp - 0x80]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x644ac0
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x645032
add eax, 0x24
mov edx, eax
mov ecx, esi
call fcn.0053e020
mov eax, dword [ebp + 0xc]
test eax, eax
mov esi, 0x7fffffff
cmovne esi, eax
add esi, dword [0xb53344]
mov ecx, ebx
call fcn.0053db10
cmp eax, esi
jle 0x644bf2
mov ecx, eax
mov eax, dword [ebp - 0x34]
mov edx, ecx
mov ecx, dword [ebp - 0x30]
add eax, ecx
add eax, 3
mov dword [ebp - 0x48], eax
mov ecx, edx
mov dword [ebp - 0x24], 0
movaps xmm1, xmmword [0xaaf730]
mov edx, dword [ebp - 0x38]
cmp ecx, esi
jle 0x644c01
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x20], ebx
mov eax, ebx
nop dword [eax]
movzx ecx, byte [eax + 1]
test ecx, ecx
je 0x644bfa
inc eax
inc dword [ebp - 0x20]
cmp ecx, 0x5c
jne 0x644b20
mov dword [ebp - 0x44], eax
test byte [ebp - 0x24], 1
jne 0x644bce
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x28], ebx
mov edx, dword [ebp - 0x48]
sub edx, edi
movzx eax, byte [0xb287b5]
cmp al, 0x23
mov cl, 0x68
je 0x644b9a
nop word [eax + eax]
mov al, 0x3b
lock cmpxchg byte [0xb287b5], cl
je 0x644b72
cmp al, 0x23
jne 0x644b60
jmp 0x644b9a
movaps xmm0, xmmword [0xb287b0]
xorps xmm0, xmm1
movss dword [0xb287b0], xmm0
xor byte [0xb287b4], 0x48
mov al, 0x23
xchg byte [0xb287b5], al
mov dword [ebp - 0x10], 3
mov dword [ebp - 0x10], 3
mov dword [ebp - 0x24], edi
mov ecx, edi
push 0xb287b0
call fcn.00647fb0
add esp, 4
mov edi, dword [ebp - 0x24]
add edi, 4
mov al, 1
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x40]
movaps xmm1, xmmword [0xaaf730]
mov ecx, dword [ebp - 0x30]
xor ecx, ebx
and dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x30]
lea ebx, [ecx + ebx*2]
mov dword [ebp - 0x30], ebx
mov ecx, dword [ebp - 0x30]
sub ecx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x44]
cmp ecx, esi
jg 0x644b14
jmp 0x644c01
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x38]
jmp 0x644c04
mov dword [ebp - 0x10], 3
mov eax, dword [ebp - 0x34]
add edx, eax
sub edx, edi
mov dword [ebp - 0x10], 3
mov dword [ebp - 0x24], edi
mov ecx, edi
push ebx
call fcn.00647fb0
add esp, 4
mov esi, dword [ebp - 0x24]
mov ecx, esi
call fcn.0053db10
mov ecx, dword [ebp - 0x2c]
test cl, cl
je 0x644c52
mov dword [ebp - 0x20], eax
mov byte [ebp - 0x84], cl
mov word [ebp - 0x83], 0x3a
lea eax, [ebp - 0x84]
push eax
call sub.KERNEL32.dll_SetCurrentDirectoryA
mov esi, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
add esi, eax
cmp byte [ebp - 0x3c], 0
je 0x644c5e
mov byte [esi], 0x22
inc esi
mov ebx, dword [ebp + 8]
mov byte [esi], 0
mov edx, dword [ebp - 0x50]
mov eax, 0xaaf820
mov ecx, 0xa
add eax, dword [0xaaf820]
mov dword [ebp - 0x30], eax
cmp dword [0xb28868], 0x1b877bcd
mov eax, dword [0xaaf750]
mov dword [ebp - 0x24], eax
mov eax, dword [0xaaf7fc]
je 0x644ca2
mov dword [0xb28880], 0xa95e8016
mov ecx, 0xf
add edx, dword [0xb53348]
mov dword [ebp - 0x44], edx
cmp edx, ecx
jbe 0x644d1a
mov ecx, dword [ebp - 0x64]
mov edx, dword [ebp - 0x44]
inc edx
cmp edx, 0xfff
jbe 0x644d15
mov dword [ebp - 0x90], ecx
mov ecx, dword [0xb28864]
lea esi, [ecx + 1]
mov dword [0xb28864], esi
mov edx, 0xfffffffe
sub edx, ecx
xor esi, ecx
not ecx
and edx, ecx
or esi, edx
mov dword [ebp - 0x88], esi
cmp esi, 0xffffffff
je 0x644de6
xor edx, edx
mov ecx, dword [ebp - 0x90]
mov eax, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, eax
cmp ecx, 0x20
jae 0x64500c
mov edx, dword [ebp - 0x44]
add edx, 0x24
mov ecx, eax
mov ebx, dword [ebp + 8]
call fcn.0053e020
lea eax, [ebx + 4]
mov dword [ebp - 0x20], eax
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x18], 0xf
mov byte [ebx + 4], 0
mov esi, dword [ebp - 0x34]
mov ecx, esi
call fcn.0053db10
mov edi, eax
cmp eax, 0xf
jbe 0x644d66
mov dword [ebp - 0x10], 0xffffffff
sub esp, 0xc
movzx eax, byte [ebp - 0x68]
mov byte [esp + 4], al
mov dword [esp + 8], esi
mov dword [esp], edi
mov ecx, dword [ebp - 0x20]
call fcn.0052ce20
jmp 0x644d7b
mov dword [ebx + 0x14], edi
push edi
push esi
push dword [ebp - 0x20]
call fcn.0077cce0
add esp, 0xc
mov byte [ebx + edi + 4], 0
mov dword [ebx], 0x799e70
mov ecx, esi
call fcn.0053ea00
jmp 0x644ff4
mov eax, dword [ebp - 0x54]
movsx ecx, byte [ebx + eax]
test ecx, ecx
je 0x644f4c
cmp ecx, 0x5c
jne 0x644f58
add ebx, eax
inc ebx
jmp 0x644a92
mov dword [ebp - 0x20], ecx
mov eax, esi
or eax, 0xf
cmp eax, 0x7fffffff
mov ebx, 0x7fffffff
cmovb ebx, eax
cmp ebx, 0xfff
jb 0x644fc2
lea ecx, [ebx + 0x24]
call fcn.0053d610
mov ecx, eax
add eax, 0x23
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x644fca
lea eax, [eax + 0xaaf7fc]
lea ebx, [eax + 0x1c]
cmp dword [0xb2887c], 0x59fa582a
mov dword [ebp - 0x8c], eax
cmove ebx, eax
mov eax, dword [ebx]
cmp dword [ebp - 0x24], 0
jle 0x644cf1
add ebx, eax
mov eax, dword [0xb28880]
mov dword [ebp - 0x2c], eax
mov eax, dword [0xb2886c]
mov dword [ebp - 0x48], eax
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x40], 0
jmp 0x644e4f
mov ecx, dword [ebp - 0x20]
xor dl, al
inc ecx
cmp ecx, dword [ebp - 0x24]
jge 0x644cf3
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x20], ecx
add ecx, eax
cmp dword [ebp - 0x2c], 0xdfbd2e45
jne 0x644ea0
mov esi, ecx
sub esi, ebx
mov eax, 0
sbb eax, dword [ebp - 0x38]
mov edi, eax
shld edi, esi, cl
mov dword [ebp - 0x28], edx
mov edx, esi
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov dword [ebp - 0x3c], ebx
mov ebx, 0
cmovne edx, ebx
mov ebx, dword [ebp - 0x3c]
shld eax, esi, 1
add esi, esi
sub esi, edx
mov edx, dword [ebp - 0x28]
sbb eax, edi
jmp 0x644eaa
mov esi, ebx
sub esi, ecx
mov eax, dword [ebp - 0x38]
sbb eax, 0
cmp esi, 1
sbb eax, 0
movzx eax, byte [ecx]
jge 0x644e40
cmp dword [ebp - 0x48], 0x48d4b4db
jne 0x644f12
mov ecx, esi
shl ecx, 4
mov edi, ecx
mov dword [ebp - 0x28], eax
lea eax, [esi*4 - 0x10]
add ecx, 0xffffffb0
and ecx, eax
mov eax, 2
shl eax, cl
xor edi, esi
mov esi, edx
lea edx, [eax - 2]
mov ecx, eax
shl edx, cl
imul edx, eax
mov ecx, edi
sub ecx, edx
imul ecx, edx
mov edx, esi
mov eax, dword [ebp - 0x20]
add eax, edi
shl edi, cl
mov ecx, eax
mov eax, dword [ebp - 0x28]
and al, 1
mov dword [ebp - 0x28], eax
add ecx, edi
add ecx, 0xfffffffe
mov eax, dword [eax]
mov eax, dword [ebp - 0x28]
jmp 0x644e43
mov eax, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x40]
lea edi, [eax + ecx*4]
add edi, 4
add edi, dword [eax + ecx*4 + 4]
lea eax, [ecx + 1]
mov ebx, esi
xor ebx, 4
and esi, 4
mov ecx, dword [ebp - 0x20]
add ecx, ebx
mov ebx, edi
lea ecx, [ecx + esi*2]
dec ecx
mov dword [ebp - 0x40], eax
xor eax, eax
mov dword [ebp - 0x38], 0
jmp 0x644e43
mov byte [edi], 0x2e
inc edi
add ebx, dword [ebp - 0x54]
jmp 0x644a92
cmp eax, 1
sete al
cmp byte [ebp - 0x2c], 0
sete cl
and cl, al
movzx eax, cl
add ebx, eax
jmp 0x644a92
movaps xmm0, xmmword [0xb28790]
xorps xmm0, xmmword [0xaaf740]
movss dword [0xb28790], xmm0
xor byte [0xb28794], 0x42
xor byte [0xb28795], 0x4a
xor byte [0xb28796], 0xe1
mov al, 0x6c
xchg byte [0xb28797], al
movzx eax, word [0xb28794]
mov word [ecx + 4], ax
mov eax, dword [0xb28790]
mov dword [ecx], eax
mov byte [ebx + 0xa], 0
mov dword [ebx], 0x799e70
jmp 0x644ff4
lea ecx, [ebx + 1]
call fcn.0053d610
mov ecx, dword [ebp - 0x20]
mov dword [ecx], eax
mov ecx, dword [0xb53350]
add ecx, esi
inc ecx
push ecx
push edi
push eax
call fcn.0077cce0
add esp, 0xc
mov eax, dword [ebp + 8]
mov dword [eax + 0x14], esi
mov dword [eax + 0x18], ebx
mov ebx, eax
mov dword [eax], 0x799e70
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, ebx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
cmp dword [0xb28870], 0xa404e990
movzx eax, byte [0xaaf760]
jne 0x64503e
mov dword [0xb28868], 0x1936367d
mov eax, dword [0xb53344]
add eax, eax
jmp 0x645055
mov dword [ebp - 0x10], 0
call fcn.00748ef1
sub al, dl
xor ecx, ecx
cmp dword [ebp - 0x88], 0xffffffff
movzx eax, al
cmovne eax, ecx
add eax, dword [0xb53344]
mov dword [ebp - 0x10], 1
mov dword [0xb53344], eax
call fcn.00748ef1
nop word cs:[eax + eax]
push ebp
sub esp, 0xc
add ebp, 0xc
call fcn.0077ccd0
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
call fcn.0077ccd0
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
lea ecx, [ebp - 0x68]
call fcn.005193a0
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x4c], eax
add esp, 0xc
pop ebp
ret