Function at 0x415cfc
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xcc
mov eax, 0x492a88
call fcn.0046af5d
mov esi, dword [ebp + 8]
xor edx, edx
mov eax, dword [ebp + 0x10]
mov dword [ebp - 4], edx
mov dword [eax], edx
cmp dword [esi + 0x108], edx
je 0x415d38
mov edi, dword [esi + 0x104]
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x415d38
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
xor edx, edx
mov dword [edi + 8], edx
lea ebx, [esi + 0x100]
mov byte [esi + 0x10c], dl
mov ecx, dword [ebx]
test ecx, ecx
je 0x415d54
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
xor edx, edx
mov dword [ebx], edx
mov edi, dword [ebp + 0xc]
lea eax, [esi + 0xf0]
mov dword [eax], edx
lea ebx, [esi + 0x1a8]
mov dword [eax + 4], edx
xor ecx, ecx
mov byte [esi + 0xc5], dl
lea eax, [esi + 0xac]
mov dword [esi + 0xb8], edx
mov dword [esi + 0xbc], edx
mov byte [esi + 0xc0], dl
mov word [esi + 0xf8], 0
mov dword [esi + 0xe8], edi
mov dword [eax + 4], edx
mov eax, dword [eax]
mov word [eax], cx
mov eax, dword [ebx]
mov dword [ebx + 4], edx
mov word [eax], cx
mov ecx, dword [esi + 0x14]
mov eax, dword [ecx]
mov dword [ebp - 0x4c], eax
mov al, byte [esi + 0x11c]
mov byte [esi + 0xa4], al
test al, al
je 0x415dde
cmp dword [esi + 0x54], 0
mov eax, dword [esi + 0x120]
mov dword [esi + 0xa8], eax
je 0x415dd7
cmp dword [esi + 0x54], 3
jne 0x415dde
or dword [esi + 0xa8], 0xffffffff
mov al, byte [esi + 0x21]
mov byte [esi + 0x9d], al
lea eax, [esi + 0x6c]
push eax
push edi
call fcn.0041d156
test eax, eax
jne 0x4171d1
and dword [ebp - 0x18], eax
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x4c]
lea edx, [ebp - 0x20]
push edx
push 0x1d
mov byte [ebp - 4], 1
mov eax, dword [ecx]
push edi
push ecx
call dword [eax + 0x18]
mov edi, eax
test edi, edi
je 0x415e2f
cmp word [ebp - 0x20], 0
je 0x415e28
lea ecx, [ebp - 0x20]
call fcn.00408590
mov eax, edi
jmp 0x4171d1
cmp word [ebp - 0x20], 0
je 0x415e6f
push 0x15
pop eax
lea ecx, [ebp - 0x20]
cmp word [ebp - 0x20], ax
je 0x415e51
call fcn.00408590
mov eax, 0x80004005
jmp 0x4171d1
mov eax, dword [ebp - 0x18]
mov dword [esi + 0xb8], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 0xbc], eax
mov byte [esi + 0xc0], 1
call fcn.00408590
xor ecx, ecx
xor eax, eax
mov byte [ebp - 0x22], cl
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x4c]
lea edx, [ebp - 0x20]
push edx
push 0x5a
push dword [ebp + 0xc]
mov byte [ebp - 4], 2
mov eax, dword [ecx]
push ecx
call dword [eax + 0x18]
mov edi, eax
test edi, edi
jne 0x415e19
push 8
pop eax
cmp word [ebp - 0x20], ax
jne 0x415f09
push dword [ebp - 0x18]
mov ecx, ebx
mov byte [ebp - 0x22], 1
call fcn.00402d00
cmp word [ebp - 0x20], di
je 0x415ebd
lea ecx, [ebp - 0x20]
call fcn.00408590
xor eax, eax
and dword [ebp - 0x18], eax
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x4c]
lea edx, [ebp - 0x20]
push edx
push 0x36
push dword [ebp + 0xc]
mov byte [ebp - 4], 3
mov eax, dword [ecx]
push ecx
call dword [eax + 0x18]
mov edi, eax
test edi, edi
jne 0x415e19
mov ax, word [ebp - 0x20]
push 8
pop ecx
cmp ax, cx
jne 0x415f18
push dword [ebp - 0x18]
mov ecx, ebx
mov byte [ebp - 0x22], 0
mov byte [ebp + 0xb], 1
call fcn.00402d00
mov ax, word [ebp - 0x20]
jmp 0x415f21
cmp word [ebp - 0x20], 0
je 0x415ebd
lea ecx, [ebp - 0x20]
jmp 0x415e42
mov byte [ebp + 0xb], 0
test ax, ax
jne 0x415f10
mov byte [ebp - 4], 0
test ax, ax
je 0x415f32
lea ecx, [ebp - 0x20]
call fcn.00408590
cmp dword [esi + 0x1ac], 0
mov bl, 1
jne 0x416001
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x416001
mov eax, dword [ecx]
lea edx, [ebp - 0x38]
push edx
lea edx, [ebp - 0x48]
push edx
lea edx, [ebp - 0x5c]
push edx
push 0x59
push dword [esi + 0xe8]
push ecx
call dword [eax + 0x10]
cmp dword [ebp - 0x48], 0
je 0x416001
cmp dword [ebp - 0x38], 1
jne 0x415e47
lea ecx, [ebp - 0x58]
call fcn.00402a89
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], 4
call fcn.00414a9e
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x80]
push dword [ebp - 0x48]
push dword [ebp - 0x5c]
call fcn.00406aad
test al, al
je 0x415fe2
lea eax, [ebp - 0x1c]
mov byte [ebp - 0x22], 0
push eax
lea ecx, [ebp - 0x80]
call fcn.00406d01
push eax
lea ecx, [esi + 0x1a8]
mov byte [ebp - 4], 6
call fcn.00402c3b
push dword [ebp - 0x1c]
call fcn.0046a358
cmp dword [ebp - 0x7c], 1
pop ecx
sete byte [ebp + 0xb]
cmp dword [ebp - 0x80], 0xa0000003
setne bl
push dword [ebp - 0x6c]
call fcn.0046a358
push dword [ebp - 0x78]
call fcn.0046a358
mov byte [ebp - 4], 0
push dword [ebp - 0x58]
call fcn.0046a358
add esp, 0xc
xor eax, eax
mov byte [ebp - 0x9c], bl
lea ebx, [esi + 0x1a8]
cmp dword [esi + 0x1ac], eax
je 0x416114
push 0x5c
push 0x2f
mov ecx, ebx
call fcn.004030e8
mov edi, dword [ebx]
mov edx, 0x4a4420
mov ecx, edi
call fcn.00402475
test al, al
je 0x416047
push 4
mov ecx, ebx
mov byte [ebp + 0xb], 0
call fcn.004031d8
mov edi, dword [ebx]
mov ecx, edi
call fcn.00407424
test eax, eax
je 0x416069
mov byte [ebp + 0xb], 0
push eax
mov ecx, ebx
call fcn.004031d8
mov ecx, dword [ebx]
call fcn.00407424
test eax, eax
jne 0x416056
xor eax, eax
cmp dword [esi + 0x1ac], eax
je 0x416114
cmp byte [ebp + 0xb], al
jne 0x416114
cmp dword [esi + 0x114], eax
je 0x416114
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
lea edx, [ebp - 0x1c]
mov byte [ebp - 4], 7
mov ecx, ebx
call fcn.0040382a
mov eax, dword [esi + 0x114]
xor edi, edi
test eax, eax
je 0x4160d6
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + edi*4]
mov edx, dword [eax]
mov eax, dword [esi + 0x110]
mov eax, dword [eax + edi*4]
mov ecx, dword [eax]
call fcn.0040376a
test eax, eax
jne 0x4160df
mov eax, dword [esi + 0x114]
inc edi
cmp edi, eax
jb 0x4160b2
push eax
lea ecx, [ebp - 0x1c]
call fcn.00417b3e
lea edx, [ebp - 0x1c]
lea ecx, [ebp - 0x58]
call fcn.00419a4e
push 8
pop ecx
mov byte [ebp - 4], cl
lea ecx, [esi + 0x1a8]
push eax
call fcn.00402c3b
push dword [ebp - 0x58]
call fcn.0046a358
pop ecx
xor ebx, ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00401b23
jmp 0x416116
xor ebx, ebx
mov edi, dword [ebp + 0xc]
lea eax, [esi + 0xc5]
mov ecx, dword [ebp - 0x4c]
mov edx, edi
push eax
push 0xf
call fcn.0041cae9
pop ecx
pop ecx
test eax, eax
jne 0x4171d1
mov ecx, esi
call fcn.00415947
test eax, eax
jne 0x4171d1
cmp byte [esi + 0x1e], al
jne 0x416159
cmp byte [esi + 0x9c], al
je 0x416159
xor eax, eax
jmp 0x4171d1
mov ecx, dword [esi + 0x24]
lea edx, [esi + 0x78]
test ecx, ecx
je 0x416182
lea eax, [ebp - 0x31]
push eax
lea edx, [esi + 0x6c]
call fcn.00415bbe
xor edx, edx
test al, al
pop ecx
movzx ecx, byte [ebp - 0x31]
cmovne edx, ecx
test dl, dl
je 0x416152
lea edx, [esi + 0x78]
cmp byte [esi + 0x11c], 0
je 0x4161cc
lea eax, [edx + 4]
mov ecx, dword [eax]
mov dword [ebp - 0x38], eax
test ecx, ecx
je 0x4161c4
push 4
mov eax, ebx
pop ebx
cmp dword [esi + 0x54], ebx
jne 0x4161ae
cmp byte [esi + 0x9c], 0
je 0x4161ae
mov eax, ecx
jmp 0x4161bc
cmp dword [esi + 0x54], 2
je 0x4161b9
cmp dword [esi + 0x54], ebx
jne 0x4161bc
lea eax, [ecx - 1]
push eax
mov ecx, edx
call fcn.00417b3e
lea ebx, [esi + 0x78]
jmp 0x41625f
lea eax, [esi + 0x7c]
mov dword [ebp - 0x38], eax
mov eax, dword [eax]
test eax, eax
jne 0x4161e4
cmp byte [esi + 0x9e], al
jne 0x416152
mov ecx, dword [esi + 0x54]
test ecx, ecx
js 0x416251
cmp ecx, 1
jle 0x416210
cmp ecx, 2
je 0x416207
cmp ecx, 4
jne 0x416251
cmp byte [esi + 0x9c], 0
je 0x416207
mov ebx, eax
jmp 0x416251
test eax, eax
je 0x416251
lea ebx, [eax - 1]
jmp 0x416251
mov ecx, dword [esi + 0x114]
test ecx, ecx
je 0x416251
cmp eax, ecx
jb 0x41623e
jne 0x416339
cmp byte [esi + 0x10d], 0
je 0x41632c
cmp byte [esi + 0x9c], 0
jne 0x416339
cmp dword [ebp + 0x14], 0
jne 0x416251
cmp byte [esi + 0x125], 0
je 0x415e47
push ebx
lea ebx, [esi + 0x78]
mov ecx, ebx
call fcn.00417b3e
mov edi, dword [ebp + 0xc]
cmp dword [esi + 0x60], 0
je 0x416373
cmp dword [esi + 0x68], 0
jne 0x41629f
push 0x10
call fcn.0046a4f4
mov edi, eax
mov dword [ebp + 8], edi
pop ecx
push edi
and dword [edi + 4], 0
mov dword [edi], vtable.CGetProp.0
mov dword [esi + 0x64], edi
mov eax, dword [edi]
call dword [eax + 4]
mov ecx, dword [esi + 0x68]
test ecx, ecx
je 0x41629c
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [esi + 0x68], edi
mov ecx, dword [esi + 0x64]
mov edx, ebx
mov eax, dword [esi + 0x14]
mov dword [ecx + 8], eax
mov eax, dword [esi + 0x64]
mov ecx, dword [ebp + 0xc]
mov dword [eax + 0xc], ecx
lea ecx, [ebp - 0x1c]
call fcn.00419a4e
mov byte [ebp - 4], 9
cmp byte [esi + 0x9c], 0
je 0x4162f8
mov eax, dword [ebp - 0x38]
cmp dword [eax], 0
jne 0x4162df
cmp byte [esi + 0x10d], 0
jne 0x4162e9
cmp dword [esi + 0x54], 4
je 0x4162e9
push 0x3a
lea ecx, [ebp - 0x1c]
call fcn.00401a83
lea eax, [esi + 0x90]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00402e49
push dword [esi + 0x68]
mov edx, dword [esi + 0x60]
xor ecx, ecx
push dword [ebp + 0x14]
cmp byte [esi + 0x9e], cl
mov esi, dword [ebp + 0x10]
mov eax, dword [edx]
setne cl
push esi
push ecx
push dword [ebp - 0x1c]
push edx
call dword [eax + 0x10]
push dword [ebp - 0x1c]
mov esi, eax
call fcn.0046a358
pop ecx
mov eax, esi
jmp 0x4171d1
cmp byte [esi + 0x9f], 0
je 0x41623e
xor edi, edi
test ecx, ecx
je 0x41636c
mov eax, dword [edx]
mov eax, dword [eax + edi*4]
mov edx, dword [eax]
mov eax, dword [esi + 0x110]
mov eax, dword [eax + edi*4]
mov ecx, dword [eax]
call fcn.0040376a
test eax, eax
jne 0x41623e
mov ecx, dword [esi + 0x114]
lea edx, [esi + 0x78]
inc edi
cmp edi, ecx
jb 0x41633f
mov ebx, ecx
jmp 0x416251
xor ebx, ebx
mov eax, ebx
mov dword [ebp - 0x48], eax
mov byte [ebp - 4], 0xa
cmp dword [ebp + 0x14], ebx
jne 0x4163bd
cmp byte [esi + 0x125], bl
jne 0x4163bd
cmp byte [esi + 0x124], bl
je 0x416434
push 0x10
call fcn.0046a4f4
pop ecx
push eax
lea ecx, [ebp - 0x48]
mov dword [ebp + 0xc], eax
mov dword [eax + 4], ebx
mov dword [eax], vtable.CStdOutFileStream.0
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
call fcn.0040a892
mov eax, dword [ebp - 0x48]
cmp dword [esi + 0x108], 0
je 0x416410
cmp dword [ebp + 0x14], 0
je 0x4163d2
cmp dword [ebp + 0x14], 1
jne 0x416410
mov ecx, dword [esi + 0x104]
push eax
add ecx, 8
call fcn.0040a892
push dword [esi + 0x108]
lea ecx, [ebp - 0x48]
call fcn.0040a892
mov edi, dword [esi + 0x104]
mov ecx, dword [edi + 0x1c]
mov eax, dword [ecx]
call dword [eax]
mov eax, dword [ebp - 0x48]
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], ebx
mov byte [edi + 0x18], 1
mov byte [esi + 0x10c], 1
test eax, eax
je 0x41641d
mov esi, dword [ebp + 0x10]
mov ecx, eax
mov eax, ebx
mov dword [esi], ecx
mov byte [ebp - 4], 0x48
test eax, eax
je 0x416152
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x416152
xor eax, eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x4c]
lea edx, [ebp - 0x20]
push edx
push 9
mov byte [ebp - 4], 0xb
mov eax, dword [ecx]
push edi
push ecx
call dword [eax + 0x18]
mov edi, eax
test edi, edi
je 0x41646e
cmp word [ebp - 0x20], 0
je 0x4171c1
lea ecx, [ebp - 0x20]
call fcn.00408590
jmp 0x4171c1
mov cx, word [ebp - 0x20]
push 0x13
pop eax
cmp cx, ax
jne 0x41648c
mov eax, dword [ebp - 0x18]
mov dword [esi + 0xe0], eax
mov byte [esi + 0xe7], 1
jmp 0x41649b
test cx, cx
jne 0x4171b4
mov byte [esi + 0xe7], bl
mov byte [ebp - 4], 0xa
test cx, cx
je 0x4164ac
lea ecx, [ebp - 0x20]
call fcn.00408590
mov edi, dword [ebp + 0xc]
lea ecx, [esi + 0xe4]
push ecx
lea eax, [esi + 0xc8]
mov ecx, esi
push eax
push 0xa
push edi
call fcn.004158c3
test eax, eax
je 0x4164d2
mov edi, eax
jmp 0x4171c1
lea ebx, [esi + 0xe5]
mov ecx, esi
push ebx
lea eax, [esi + 0xd0]
push eax
push 0xb
push edi
call fcn.004158c3
test eax, eax
jne 0x4164cb
lea eax, [esi + 0xe6]
push eax
lea ecx, [esi + 0xd8]
push ecx
push 0xc
push edi
mov ecx, esi
call fcn.004158c3
test eax, eax
jne 0x4164cb
mov byte [ebp - 0x21], al
lea ecx, [ebp - 0x21]
mov eax, dword [esi + 0x14]
mov edx, edi
push ecx
push 0x15
mov ecx, dword [eax]
call fcn.0041cae9
pop ecx
pop ecx
test eax, eax
jne 0x4164cb
cmp byte [esi + 0x9c], al
je 0x416544
mov eax, dword [ebp - 0x38]
cmp dword [eax], 0
jne 0x416544
cmp byte [esi + 0x10d], 0
jne 0x416563
cmp dword [esi + 0x54], 4
je 0x416563
movzx eax, byte [esi + 0x9f]
lea edi, [esi + 0x78]
cmp dword [esi + 0x54], 3
mov dl, byte [esi + 0x5c]
push eax
push edi
sete cl
call fcn.004198d1
pop ecx
pop ecx
jmp 0x416566
lea edi, [esi + 0x78]
cmp byte [esi + 0x9c], 0
je 0x416612
lea eax, [esi + 0x90]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00402b57
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x12
call fcn.0041975e
mov eax, dword [ebp - 0x38]
mov bl, 1
cmp dword [eax], 0
jne 0x4165b2
mov ecx, edi
call fcn.00417b89
cmp byte [esi + 0x10d], 0
jne 0x4165ae
cmp dword [esi + 0x54], 4
jne 0x4165cd
xor bl, bl
jmp 0x4165cd
cmp dword [esi + 0x54], 3
jne 0x4165d0
mov ecx, edi
call fcn.00403b3f
mov ecx, dword [ebp - 0x38]
cmp eax, dword [ecx]
jne 0x4165cd
mov ecx, edi
call fcn.00417b89
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax]
mov eax, dword [edi]
mov edi, dword [eax + ecx*4 - 4]
test bl, bl
je 0x4165f4
cmp byte [esi + 0x20], 0
push 0x3a
pop eax
push 0x5f
pop ecx
cmovne eax, ecx
mov ecx, edi
movzx eax, ax
push eax
call fcn.00401a83
lea eax, [ebp - 0x1c]
mov ecx, edi
push eax
call fcn.00402e49
mov byte [ebp - 4], 0xa
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
lea ebx, [esi + 0xe5]
lea edi, [esi + 0x78]
mov edx, edi
lea ecx, [ebp - 0x44]
call fcn.00419a4e
mov byte [ebp - 4], 0x13
cmp byte [ebp - 0x21], 0
jne 0x416711
cmp byte [esi + 0x9e], 0
mov eax, dword [ebp - 0x38]
jne 0x41664c
cmp dword [eax], 0
je 0x416711
mov ecx, edi
call fcn.00403bb3
mov eax, dword [ebp - 0x38]
cmp dword [eax], 0
je 0x416711
lea ecx, [ebp - 0x1c]
call fcn.00402a89
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 0x14
push eax
push edi
mov ecx, esi
call fcn.0041580e
cmp byte [esi + 0x9e], 0
je 0x416704
lea eax, [ebp - 0x1c]
push eax
lea ecx, [esi + 0x144]
call fcn.00401b4b
push dword [ebp + 0xc]
lea ecx, [esi + 0x150]
call fcn.00401ba1
cmp byte [esi + 0xc4], 0
je 0x4166b1
cmp byte [esi + 0xe6], 0
je 0x4166b1
lea eax, [esi + 0xd8]
jmp 0x4166c2
mov eax, dword [esi + 0x14]
cmp byte [eax + 0xa4], 0
je 0x4166c6
add eax, 0x9c
xor edx, edx
jmp 0x4166ca
xor edx, edx
mov eax, edx
cmp byte [esi + 0xc3], 0
je 0x4166de
cmp byte [ebx], 0
lea ecx, [esi + 0xd0]
jne 0x4166e0
mov ecx, edx
cmp byte [esi + 0xc2], 0
je 0x4166f8
cmp byte [esi + 0xe4], 0
je 0x4166f8
lea edx, [esi + 0xc8]
push eax
push ecx
mov ecx, dword [ebp - 0x1c]
call fcn.00404b59
pop ecx
pop ecx
mov byte [ebp - 4], 0x13
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x30]
call fcn.00402b57
mov byte [ebp - 4], 0x15
cmp dword [esi + 0x54], 3
jne 0x416733
mov ecx, dword [ebp - 0x44]
call fcn.004072f9
test al, al
jne 0x41675d
lea eax, [ebp - 0x30]
push eax
lea edx, [esi + 0x3c]
lea ecx, [ebp - 0x1c]
call fcn.00415c81
pop ecx
push eax
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x16
call fcn.00402c3b
mov byte [ebp - 4], 0x15
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
cmp byte [esi + 0x9c], 0
je 0x4167ef
mov eax, dword [esi + 0xa0]
cmp eax, 0xffffffff
je 0x4167ef
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x20], eax
call fcn.00402a89
lea eax, [ebp - 0x20]
lea edi, [esi + 0x1b4]
push eax
mov ecx, edi
call fcn.004179c0
push dword [ebp - 0x1c]
mov ebx, eax
call fcn.0046a358
pop ecx
test ebx, ebx
js 0x4167ef
mov ecx, dword [edi]
mov eax, dword [ecx + ebx*4]
lea ecx, [ebp - 0x30]
add eax, 4
push eax
call fcn.00402c3b
push 0x3a
lea ecx, [ebp - 0x30]
call fcn.00401a83
lea eax, [esi + 0x90]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00402b57
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x17
call fcn.0041975e
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x30]
call fcn.00402e49
mov byte [ebp - 4], 0x15
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
xor ebx, ebx
mov byte [ebp - 0x31], bl
cmp byte [esi + 0x9e], bl
je 0x416841
lea eax, [ebp - 0x30]
lea edi, [esi + 0xac]
push eax
mov ecx, edi
call fcn.00402c3b
mov bl, byte [ebp - 0x21]
test bl, bl
je 0x41681b
mov ecx, dword [edi]
call fcn.00404c9a
cmp dword [esi + 0x1ac], 0
jne 0x416c16
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
pop ecx
pop ecx
xor edi, edi
jmp 0x4171c1
cmp byte [esi + 0xc0], bl
jne 0x416c0d
lea ecx, [ebp - 0x98]
call fcn.00405a62
lea ecx, [ebp - 0x70]
call fcn.00402a89
mov byte [ebp - 4], 0x19
lea ecx, [ebp - 0x98]
push dword [ebp - 0x30]
call fcn.00405af9
test al, al
je 0x416b73
mov eax, dword [esi + 0x58]
mov ecx, eax
sub ecx, ebx
je 0x4168af
dec ecx
sub ecx, 1
jne 0x416a0b
push dword [ebp - 0x70]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0xc
mov edi, ebx
jmp 0x4171c1
lea ecx, [ebp - 0x30]
call fcn.00402f3d
inc eax
lea ecx, [ebp - 0x30]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00414a61
mov byte [ebp - 4], 0x1b
lea ecx, [ebp - 0x58]
push dword [ebp - 0x6c]
push dword [ebp - 0x70]
push dword [eax + 4]
push dword [eax]
call fcn.004029ec
mov byte [ebp - 4], 0x1d
push dword [ebp - 0x1c]
call fcn.0046a358
mov edx, dword [esi + 0x28]
lea eax, [ebp - 0x5c]
pop ecx
push eax
xor eax, eax
lea edi, [esi + 0xf0]
cmp byte [esi + 0xf8], al
mov ecx, dword [edx]
cmovne eax, edi
lea edi, [esi + 0xd8]
push eax
xor eax, eax
cmp byte [esi + 0xe6], al
cmovne eax, edi
mov edi, dword [ebp - 0x58]
push eax
push dword [esi + 0x6c]
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x80]
push eax
push edi
push edx
call dword [ecx + 0x14]
mov ebx, eax
test ebx, ebx
je 0x416958
push edi
call fcn.0046a358
push dword [ebp - 0x70]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0x10
jmp 0x4168a8
mov eax, dword [ebp - 0x5c]
xor ebx, ebx
sub eax, ebx
je 0x4169fd
sub eax, 1
je 0x4169f6
sub eax, 1
je 0x416932
sub eax, 1
je 0x4169ea
sub eax, 1
je 0x4169e1
sub eax, 1
je 0x4169b6
sub eax, 1
je 0x4169ad
push edi
call fcn.0046a358
push dword [ebp - 0x70]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0x10
jmp 0x4171bc
mov dword [esi + 0x58], 5
jmp 0x4169fd
push edi
call fcn.0046a358
push dword [ebp - 0x70]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0x10
mov edi, 0x80004004
jmp 0x4171c1
mov dword [esi + 0x58], 3
jmp 0x4169fd
mov dword [esi + 0x58], 2
jmp 0x416932
mov dword [esi + 0x58], 1
push edi
mov byte [ebp - 4], 0x19
call fcn.0046a358
mov eax, dword [esi + 0x58]
pop ecx
cmp eax, 5
je 0x416b1f
cmp eax, 3
je 0x416b1f
cmp eax, 4
jne 0x416ab7
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00402b57
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x25
call fcn.00409eb2
test al, al
jne 0x416a84
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
push str.Can_not_create_file_with_auto_name
call fcn.00415964
push dword [ebp - 0x1c]
mov edi, eax
call fcn.0046a358
push dword [ebp - 0x70]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0x10
test edi, edi
jne 0x4171c1
jmp 0x4171bc
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x30]
call fcn.00404d15
test al, al
jne 0x416aa9
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
lea eax, [ebp - 0x1c]
push eax
push str.Can_not_rename_existing_file
call fcn.00415a4a
jmp 0x416a52
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
jmp 0x416b61
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x30]
shr eax, 4
test al, 1
je 0x416b0b
call fcn.00404c9a
test al, al
jne 0x416b61
lea eax, [ebp - 0x30]
push eax
push str.Can_not_delete_output_folder
mov ecx, esi
call fcn.004159ba
push dword [ebp - 0x70]
mov edi, eax
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0xc
test edi, edi
jne 0x4171c1
jmp 0x4168a8
call fcn.004051ef
test al, al
jne 0x416b61
lea eax, [ebp - 0x30]
push eax
push str.Can_not_delete_output_file
jmp 0x416ada
lea ecx, [ebp - 0x30]
call fcn.00409eb2
test al, al
jne 0x416b5d
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
push str.Can_not_create_file_with_auto_name
call fcn.00415964
push dword [ebp - 0x70]
mov edi, eax
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0xc
jmp 0x416a77
mov byte [ebp - 0x31], 1
cmp dword [esi + 0x58], 5
jne 0x416c00
mov dword [esi + 0x58], ebx
jmp 0x416c00
mov ecx, dword [ebp - 0x30]
call fcn.00407313
mov edi, eax
test edi, edi
js 0x416c00
cmp word [ecx + edi*2 + 2], bx
je 0x416c00
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00402b57
mov byte [ebp - 4], 0x2e
cmp edi, dword [ebp - 0x18]
jae 0x416ba9
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
mov dword [ebp - 0x18], edi
mov word [eax + edi*2], cx
lea ecx, [ebp - 0xd8]
call fcn.00405a62
lea ecx, [ebp - 0xb0]
call fcn.00402a89
mov byte [ebp - 4], 0x2f
lea ecx, [ebp - 0xd8]
push dword [ebp - 0x1c]
call fcn.00405af9
test al, al
je 0x416beb
mov edx, dword [ebp - 0xb8]
test dl, 1
je 0x416beb
mov ecx, dword [ebp - 0x1c]
and edx, 0xfffffffe
call fcn.00404c18
push dword [ebp - 0xb0]
call fcn.0046a358
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
pop ecx
mov byte [ebp - 4], 0x15
push dword [ebp - 0x70]
call fcn.0046a358
pop ecx
mov bl, byte [ebp - 0x21]
lea edi, [esi + 0xac]
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.00402c3b
test bl, bl
jne 0x417184
mov eax, dword [esi + 0x1ac]
test eax, eax
je 0x416e8b
lea ecx, [ebp - 0x58]
call fcn.00402a89
mov byte [ebp - 4], 0x30
cmp byte [ebp + 0xb], bl
je 0x416c6d
lea edx, [esi + 0x6c]
lea ecx, [ebp - 0x1c]
call fcn.00415ad3
push eax
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0x31
call fcn.00402c3b
mov byte [ebp - 4], 0x30
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
lea ebx, [esi + 0x1a8]
push ebx
lea ecx, [ebp - 0x58]
call fcn.00402e49
lea ecx, [ebp - 0x58]
call fcn.00415b28
test al, al
jne 0x416cc2
lea eax, [ebp - 0x58]
mov ecx, esi
push eax
push str.Dangerous_link_path_was_ignored
call fcn.00415964
mov edi, eax
test edi, edi
je 0x416e70
push dword [ebp - 0x58]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0xc
jmp 0x4171c1
lea ecx, [ebp - 0x1c]
call fcn.00402a89
cmp byte [ebp - 0x22], 0
mov byte [ebp - 4], 0x33
jne 0x416d2a
cmp byte [ebp + 0xb], 0
je 0x416d2a
push ebx
lea ecx, [ebp - 0x1c]
call fcn.00402c3b
cmp dword [ebp - 0x18], 0
je 0x416e67
cmp byte [ebp - 0x22], 0
je 0x416d7c
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x30]
call fcn.00404ddf
test al, al
jne 0x416e67
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
lea eax, [ebp - 0x30]
push eax
push str.Can_not_create_hard_link
call fcn.00415a4a
mov edi, eax
test edi, edi
je 0x416e67
jmp 0x416d54
mov edx, dword [ebp - 0x58]
lea eax, [ebp - 0x1c]
mov ecx, dword [esi + 0x48]
push eax
call fcn.00407b54
pop ecx
test al, al
jne 0x416ce3
lea eax, [ebp - 0x58]
mov ecx, esi
push eax
push str.Incorrect_path
call fcn.00415964
mov edi, eax
test edi, edi
je 0x416ce3
push dword [ebp - 0x1c]
call fcn.0046a358
push dword [ebp - 0x58]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0x10
jmp 0x4171c1
cmp byte [esi + 0x1a], 0
je 0x416e67
xor eax, eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov byte [ebp - 4], 0x36
lea ecx, [ebp - 0x60]
push dword [ebp - 0x9c]
mov edx, dword [ebp - 0x1c]
call fcn.00406906
pop ecx
test al, al
je 0x416e5d
lea ecx, [ebp - 0x80]
call fcn.00414a9e
mov byte [ebp - 4], 0x37
lea ecx, [ebp - 0x80]
push dword [ebp - 0x5c]
mov edi, dword [ebp - 0x60]
push edi
call fcn.00406aad
test al, al
jne 0x416e1f
lea eax, [esi + 0x6c]
mov ecx, esi
push eax
push str.Internal_error_for_symbolic_link_file
call fcn.00415964
mov ebx, eax
test ebx, ebx
je 0x416e49
push dword [ebp - 0x6c]
call fcn.0046a358
push dword [ebp - 0x78]
call fcn.0046a358
push edi
call fcn.0046a358
push dword [ebp - 0x1c]
call fcn.0046a358
push dword [ebp - 0x58]
call fcn.0046a358
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
add esp, 0x1c
jmp 0x4168a8
push dword [ebp - 0x5c]
mov dl, byte [esi + 0x9e]
mov ecx, dword [ebp - 0x30]
push edi
call fcn.00406e47
pop ecx
pop ecx
test al, al
jne 0x416e49
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
push str.Can_not_create_symbolic_link
call fcn.004159ba
jmp 0x416ddb
push dword [ebp - 0x6c]
call fcn.0046a358
push dword [ebp - 0x78]
call fcn.0046a358
pop ecx
pop ecx
jmp 0x416e60
mov edi, dword [ebp - 0x60]
push edi
call fcn.0046a358
pop ecx
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
mov byte [ebp - 4], 0x15
push dword [ebp - 0x58]
call fcn.0046a358
mov eax, dword [esi + 0x1ac]
pop ecx
test eax, eax
jne 0x417184
xor ebx, ebx
cmp dword [esi + 0x194], ebx
je 0x416f39
cmp byte [esi + 0x9c], bl
jne 0x416f39
mov edx, dword [ebp + 0xc]
lea eax, [ebp + 0xb]
mov ecx, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.00415089
mov edi, eax
pop ecx
pop ecx
test edi, edi
je 0x416ed7
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
pop ecx
pop ecx
jmp 0x4171c1
cmp byte [ebp + 0xb], bl
je 0x416f39
mov edi, dword [esi + 0x194]
test edi, edi
je 0x416f13
mov dword [ebp + 8], edi
lea ecx, [ebp - 0x20]
add edi, ebx
shr edi, 1
mov eax, edi
shl eax, 4
add eax, dword [esi + 0x190]
push eax
call fcn.00415044
test eax, eax
je 0x416f16
lea ecx, [edi + 1]
cmovns edi, dword [ebp + 8]
cmovns ebx, ecx
cmp ebx, edi
jne 0x416ee6
or edi, 0xffffffff
xor ebx, ebx
test edi, edi
js 0x416f39
mov eax, dword [esi + 0x19c]
mov edi, dword [eax + edi*4]
cmp dword [edi + 4], ebx
jne 0x416fdc
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.00402c3b
push 0x20
call fcn.0046a4f4
mov edi, eax
mov dword [ebp + 8], edi
pop ecx
push edi
mov dword [edi + 4], ebx
mov dword [edi], vtable.COutFileStream.0
or dword [edi + 8], 0xffffffff
mov dword [esi + 0xfc], edi
mov eax, dword [edi]
mov dword [ebp + 8], edi
call dword [eax + 4]
push 4
pop ecx
push 2
mov byte [ebp - 4], 0x3d
cmp byte [esi + 0xc0], 0
mov eax, dword [ebp - 0x30]
pop edx
push 0x80
cmovne edx, ecx
mov ecx, dword [esi + 0xfc]
push edx
push 1
push 0x40000000
mov dword [ecx + 0x18], ebx
mov dword [ecx + 0x1c], ebx
add ecx, 8
push eax
call fcn.0040628a
test al, al
jne 0x417039
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
push str.Can_not_open_output_file
call fcn.004159ba
mov esi, eax
test esi, esi
je 0x417018
mov byte [ebp - 4], 0x3e
mov ecx, dword [edi]
push edi
call dword [ecx + 8]
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
pop ecx
pop ecx
mov edi, esi
jmp 0x4171c1
mov edx, dword [edi]
mov ecx, dword [ebp - 0x30]
call fcn.00404ddf
test al, al
jne 0x417184
push edi
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
push str.Can_not_create_hard_link
call fcn.00415a4a
push dword [ebp - 0x30]
mov edi, eax
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
pop ecx
pop ecx
jmp 0x416afe
mov byte [ebp - 4], 0x40
mov eax, dword [edi]
push edi
call dword [eax + 8]
push dword [ebp - 0x30]
call fcn.0046a358
push dword [ebp - 0x44]
call fcn.0046a358
pop ecx
pop ecx
jmp 0x4168a8
cmp byte [esi + 0x22], 0
je 0x4170ca
cmp byte [esi + 0xc0], 0
jne 0x4170ca
cmp byte [esi + 0xf8], 0
je 0x4170ca
lea eax, [esi + 0xf0]
cmp dword [eax + 4], ebx
ja 0x417068
cmp dword [eax], 0x1000
jbe 0x4170ca
push dword [eax + 4]
mov ecx, dword [esi + 0xfc]
push dword [eax]
push 8
pop eax
add ecx, eax
call fcn.004068a9
mov ecx, dword [esi + 0xfc]
mov bl, al
push 8
pop eax
add ecx, eax
mov byte [esi + 0xf9], bl
lea eax, [ebp - 0xa0]
push eax
xor eax, eax
push eax
push eax
push eax
call fcn.004063b6
test bl, bl
jne 0x4170ca
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
push str.Can_not_set_length_for_output_file
call fcn.004159ba
mov ebx, eax
test ebx, ebx
je 0x4170ca
mov byte [ebp - 4], 0x42
mov ecx, dword [edi]
push edi
call dword [ecx + 8]
jmp 0x417022
cmp byte [ebp - 0x31], 0
je 0x417132
cmp byte [esi + 0x9c], 0
jne 0x417132
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x30]
push eax
call fcn.00402b57
mov byte [ebp - 4], 0x44
lea ebx, [esi + 0x1b4]
mov eax, dword [esi + 0x1b8]
mov ecx, ebx
mov dword [ebp + 0xc], eax
lea eax, [ebp - 0x20]
push eax
call fcn.00417931
mov ecx, dword [ebp + 0xc]
cmp ecx, dword [esi + 0x1b8]
jne 0x417125
mov ecx, dword [ebx]
mov ecx, dword [ecx + eax*4]
lea eax, [ebp - 0x30]
push eax
add ecx, 4
call fcn.00402c3b
mov byte [ebp - 4], 0x3d
push dword [ebp - 0x1c]
call fcn.0046a358
pop ecx
cmp byte [esi + 0xc0], 0
je 0x417166
mov eax, dword [esi + 0xfc]
xor edx, edx
push edx
push edx
push dword [esi + 0xbc]
mov ecx, dword [eax]
push dword [esi + 0xb8]
push eax
call dword [ecx + 0x10]
mov ebx, eax
test ebx, ebx
je 0x417166
mov byte [ebp - 4], 0x45
jmp 0x4170bf
lea ebx, [esi + 0x100]
push edi
mov ecx, ebx
call fcn.0040a892
mov byte [ebp - 4], 0x47
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov byte [ebp - 4], 0x15
jmp 0x41718a
lea ebx, [esi + 0x100]
push dword [ebx]
lea ecx, [ebp - 0x48]
call fcn.0040a892
push dword [ebp - 0x30]
call fcn.0046a358
mov byte [ebp - 4], 0xa
push dword [ebp - 0x44]
call fcn.0046a358
mov eax, dword [ebp - 0x48]
xor ebx, ebx
pop ecx
pop ecx
jmp 0x4163bd
lea ecx, [ebp - 0x20]
call fcn.00408590
mov edi, 0x80004005
jmp 0x415e28
call fcn.0046aebb
ret 0x10