Function at 0x10021d30
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xf4
mov eax, dword [ebp + 0xc]
push ebx
lea ecx, [eax + 0x24a3]
push esi
push edi
mov ebx, eax
mov dword [esp + 0x34], ecx
cmp eax, ecx
ja case.0x10021fa5.6
mov edi, dword [ebp + 8]
lea esp, [esp]
mov eax, dword [ebp + 0x18]
cmp ebx, 0x6c36
ja 0x100220ba
je 0x100220a3
cmp ebx, 0x6a44
ja 0x10022012
je 0x10021ff9
cmp ebx, 0x19d9
ja 0x10021dce
aas
je 0x10021dba
mov eax, ebx
sub eax, 0x850
je 0x10021da8
sub eax, 0x53
je case.0x10021fa5.6
jmp 0x100221e4
mov eax, dword [edi]
mov ecx, dword [eax*4 + 0x1006d560]
mov dword [esp + 0x1c], ecx
jmp 0x100221e4
loopne 0x10021e13
jecxz 0x10021d8e
invalid
cmp ebx, 0x1a2c
je 0x100221fc
cmp ebx, 0x1b1d
jne 0x100221e4
mov eax, dword [eax]
inc eax
cmp eax, 0x3f
ja case.0x10021df9.0
movzx edx, byte [eax + 0x10022374]
jmp dword [edx*4 + 0x1002235c]
mov esi, 0x580b
mov eax, esi
sub eax, 0x580b
je 0x10021e15
sub eax, 0x59
je 0x10021e8c
jmp 0x10021e21
push 0x3e
mov eax, edi
call fcn.1002b7a0
add esp, 4
add esi, 0x59
cmp esi, 0x5864
jbe 0x10021e05
mov esi, 0x12d0
mov eax, esi
sub eax, 0x12d0
je 0x10021e54
sub eax, 0x29
je 0x10021e46
sub eax, 0x29
je 0x10021e8c
jmp 0x10021e64
push 0x3f
mov eax, edi
call fcn.1002b7a0
add esp, 4
jmp 0x10021e64
xchg edi, eax
fst dword [ebx + 0x236ae9ed]
push edi
call fcn.1003afd0
add esp, 8
add esi, 0x29
cmp esi, 0x1322
jbe 0x10021e31
mov esi, 0xc5e
mov eax, esi
sub eax, 0xc5e
je 0x10021eab
sub eax, 0x58
je 0x10021e98
sub eax, 0x58
jne 0x10021ebb
fucomi st(0)
inc ebp
fdiv qword [edx]
mov eax, 2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
jno 0x10021e6d
push es
cmp eax, 0x8b406ad9
invalid
sal edi, 1
push ebp
push es
stosb byte es:[edi], al
push 0x23
push edi
call fcn.1003afd0
add esp, 8
add esi, 0x58
cmp esi, 0xd0e
jbe 0x10021e74
xor esi, esi
cmp esi, 0xc3
ja case.0x10021ed7.1
movzx eax, byte [esi + 0x100223c8]
jmp dword [eax*4 + 0x100223b4]
push 0x27
push edi
call fcn.1003afd0
push 0
mov eax, edi
call fcn.1002b7a0
add esp, 0xc
jmp case.0x10021ed7.1
stosd dword es:[edi], eax
or al, 0x3e
mov byte [0x10458bec], al
mov ecx, edi
call fcn.10031800
mov dword [esp + 0x1c], 0
jmp case.0x10021ed7.1
daa
mov al, 0xf1
inc edi
mov ecx, dword [ebp + 0x14]
mov byte [ecx + 0x80], 1
add esi, 0x41
lea edx, [esi + 0x2cf5]
cmp edx, 0x2db8
jbe 0x10021ec8
xor esi, esi
cmp esi, 0xc3
ja case.0x10021f3e.1
movzx eax, byte [esi + 0x100224a0]
jmp dword [eax*4 + 0x1002248c]
cwde
stosd dword es:[edi], eax
xchg ebx, eax
js 0x10021efc
push 0x22
push edi
call fcn.1003afd0
add esp, 8
jmp case.0x10021f3e.1
lodsd eax, dword [esi]
insb byte es:[edi], dx
in ax, 0x4c
mov eax, dword [ebp + 0x10]
mov ecx, edi
call fcn.10031800
mov dword [esp + 0x1c], 0
jmp case.0x10021f3e.1
lds ebp, [esi - 0xb]
rol dword [ebx + 0x6a], cl
add byte [ebx - 0x67dd1739], cl
add byte [eax], al
mov ecx, dword [ebp + 0x14]
add esp, 4
mov byte [ecx + 0x80], 1
add esi, 0x41
lea edx, [esi + 0x1ae7]
cmp edx, 0x1baa
jbe 0x10021f2f
xor esi, esi
mov edi, edi
cmp esi, 6
ja case.0x10021fa5.1
jmp dword [esi*4 + 0x10022564]
push 0x42
mov eax, edi
call fcn.1002b7a0
add esp, 4
jmp case.0x10021fa5.1
inc ecx
and ecx, dword [edi + 0x39]
dec ebx
push 0x23
push edi
call fcn.1003afd0
add esp, 8
jmp case.0x10021fa5.1
sar ch, 0x56
and ch, ch
mov eax, dword [ebp + 0x14]
mov byte [eax + 0x80], 1
mov dword [esp + 0x1c], 2
add esi, 2
lea ecx, [esi + 0x18d5]
cmp ecx, 0x18db
jbe 0x10021fa0
jmp 0x100221e4
push 3
lea edx, [esp + 0x14]
push 0x100681b8
push edx
call fcn.1003f520
add esp, 0xc
jmp 0x100221e4
cmp ebx, 0x6b3d
ja 0x1002206a
je 0x10022054
mov eax, ebx
sub eax, 0x6a97
je 0x1002203b
sub eax, 0x53
jne 0x100221e4
mov dword [esp + 0x18], str.IigMStUincendryno
jmp 0x100221e4
push 3
lea eax, [esp + 0x16]
push 0x100681b4
push eax
call fcn.1003e130
add esp, 0xc
jmp 0x100221e4
mov eax, dword [esp + 0x18]
mov cl, byte [eax]
mov dl, byte [eax + 1]
mov byte [esp + 0x28], cl
mov byte [esp + 0x2c], dl
jmp 0x100221e4
mov eax, ebx
sub eax, 0x6b90
je 0x10022093
sub eax, 0x53
jne 0x100221e4
mov eax, dword [esp + 0x18]
mov cl, byte [eax + 3]
mov dl, byte [eax + 4]
mov byte [esp + 0x20], cl
mov byte [esp + 0x22], dl
jmp 0x100221e4
mov eax, dword [esp + 0x18]
mov cl, byte [eax + 2]
mov byte [esp + 0x27], cl
jmp 0x100221e4
mov eax, dword [esp + 0x18]
mov dl, byte [eax + 5]
mov al, byte [eax + 6]
mov byte [esp + 0x23], dl
mov byte [esp + 0x2a], al
jmp 0x100221e4
cmp ebx, 0x6e28
ja 0x1002216c
je 0x1002215f
cmp ebx, 0x6d2f
ja 0x10022126
je 0x1002210f
mov eax, ebx
sub eax, 0x6c89
je 0x100220ff
sub eax, 0x53
jne 0x100221e4
mov eax, dword [esp + 0x18]
mov cl, byte [eax + 8]
mov dl, byte [eax + 9]
mov byte [esp + 0x29], cl
mov byte [esp + 0x2d], dl
jmp 0x100221e4
mov eax, dword [esp + 0x18]
mov cl, byte [eax + 7]
mov byte [esp + 0x25], cl
jmp 0x100221e4
mov eax, dword [esp + 0x18]
mov dl, byte [eax + 0xa]
mov al, byte [eax + 0xb]
mov byte [esp + 0x30], dl
mov byte [esp + 0x26], al
jmp 0x100221e4
mov eax, ebx
sub eax, 0x6d82
je 0x10022148
sub eax, 0x53
jne 0x100221e4
mov ecx, dword [esp + 0x18]
mov dl, byte [ecx + 0xe]
mov byte [esp + 0x21], dl
jmp 0x100221e4
mov eax, dword [esp + 0x18]
mov cl, byte [eax + 0xc]
mov dl, byte [eax + 0xd]
mov byte [esp + 0x2f], cl
mov byte [esp + 0x24], dl
jmp 0x100221e4
mov eax, dword [esp + 0x18]
mov cl, byte [eax + 0xf]
mov byte [esp + 0x2b], cl
jmp 0x100221e4
cmp ebx, 0x6f21
ja 0x100221ab
je 0x1002219a
mov eax, ebx
sub eax, 0x6e7b
je 0x10022188
sub eax, 0x53
jne 0x100221e4
mov dword [edi], eax
jmp 0x100221e4
mov edx, dword [esp + 0x18]
mov al, byte [edx + 0x10]
mov byte [esp + 0x2e], al
mov byte [esp + 0x31], 0
jmp 0x100221e4
mov ecx, dword [ebp + 0x14]
mov dword [ecx], 0
mov dword [eax], 0
jmp 0x100221e4
mov eax, ebx
sub eax, 0x6f74
je 0x100221c0
sub eax, 0x53
jne 0x100221e4
mov edx, dword [ebp + 0x10]
mov dword [edx], eax
jmp 0x100221e4
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [esp + 0x38]
push ecx
push 0xffffffffffffffff
lea edx, [esp + 0x28]
push edx
push 1
push 0x800
call dword [sym.imp.KERNEL32.dll_GetStringTypeExA]
add ebx, 0x53
cmp ebx, dword [esp + 0x34]
jbe 0x10021d60
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx]
sub eax, 0
je 0x10022238
dec eax
je 0x10022295
sub eax, 2
jne case.0x10021fa5.6
mov eax, 0x2761
cmp eax, eax
je 0x10022344
add eax, 0x63
cmp eax, 0x2761
jbe 0x1002221d
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, 0xc1f
jmp 0x10022243
mov ecx, dword [ebp + 0x14]
mov eax, esi
sub eax, 0xc1f
je 0x10022270
sub eax, 4
je 0x1002225c
sub eax, 4
je case.0x10021fa5.6
jmp 0x1002228a
invalid
mov ecx, dword [ecx + 0x18]
push ecx
push edi
call fcn.1003ade0
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0x1c]
push eax
push edi
call fcn.1003ade0
add esp, 0x10
add esi, 4
cmp esi, 0xc27
jbe 0x10022240
mov ebx, dword [esp + 0x34]
mov ecx, 0x66a3
mov dword [esp + 0x18], ecx
mov eax, ecx
sub eax, 0x66a3
je 0x100222c0
sub eax, 0x1a
jne 0x10022329
dec esi
mov eax, dword [0x8b8afd7f]
inc esp
and al, 0x1c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x14]
xor edi, edi
cmp dword [ecx + 0x20], edi
jbe 0x1002230f
mov esi, 0x7218
mov eax, esi
sub eax, 0x7218
je 0x100222f8
sub eax, 0x22
jne 0x100222fe
push ss
sbb cl, byte ss:[ebx + 0x71]
test ebx, ebx
je 0x100222fe
mov ecx, dword [ebp + 8]
push ebx
push ecx
call fcn.100317c0
mov ecx, dword [ebp + 0x14]
add esp, 8
jmp 0x100222fe
mov edx, dword [ecx + 0x1c]
mov ebx, dword [edx + edi*4]
add esi, 0x22
cmp esi, 0x723a
jbe 0x100222cf
inc edi
cmp edi, dword [ecx + 0x20]
jb 0x100222ca
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 0x1c]
mov edx, dword [ebp + 8]
push ecx
push edx
call fcn.1003ade0
mov ecx, dword [esp + 0x20]
mov edi, dword [ebp + 8]
add esp, 8
add ecx, 0x1a
mov dword [esp + 0x18], ecx
cmp ecx, 0x66bd
jbe 0x100222a2
mov ecx, dword [ebp + 0x14]
jmp 0x10022216
mov eax, dword [ecx + 0x18]
push eax
push edi
call fcn.1003ade0
add esp, 8
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret