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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x500
mov eax, dword [0x4b9170]
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
lea ecx, [esp + 0x80]
pcmpeqd xmm0, xmm0
xor eax, ebp
mov dword [esp + 0x4f8], eax
xor eax, eax
movdqa xmmword [ecx], xmm0
dec eax
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x10], eax
call fcn.0042b4a0
push edi
push esi
call fcn.0042c060
add esp, 8
call fcn.0042c340
xor ecx, ecx
mov edi, eax
xor eax, eax
inc ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
mov ecx, edi
push str.nologfile
call fcn.0042c6d0
test al, al
je 0x401080
mov dword [esp + 0x70], 6
jmp 0x401090
mov dword [esp + 0x70], 7
mov dword [esp + 0x74], str.courgette.log
lea eax, [esp + 0x70]
push eax
call fcn.004300f0
add esp, 4
push 0xffffffffffffffff
call fcn.00430500
add esp, 4
mov ecx, edi
push str.supported
call fcn.0042c6d0
mov byte [esp + 0x10], al
mov ecx, edi
push 0x49e030
call fcn.0042c6d0
mov byte [esp + 0x23], al
mov ecx, edi
push 0x49e034
call fcn.0042c6d0
mov byte [esp + 0x22], al
mov ecx, edi
push str.disadj
call fcn.0042c6d0
mov byte [esp + 0x21], al
mov ecx, edi
push 0x49e03f
call fcn.0042c6d0
mov byte [esp + 0x20], al
mov ecx, edi
push str.apply
call fcn.0042c6d0
mov byte [esp + 0x1f], al
mov ecx, edi
push str.genbsdiff
call fcn.0042c6d0
mov byte [esp + 0x1e], al
mov ecx, edi
push str.applybsdiff
call fcn.0042c6d0
mov byte [esp + 0x1d], al
mov ecx, edi
push str.gen1a
call fcn.0042c6d0
mov byte [esp + 0x17], al
mov ecx, edi
push str.gen1u
call fcn.0042c6d0
xor ebx, ebx
lea esi, [esp + 0x58]
mov byte [esp + 0xf], al
mov dword [esp + 0x28], edi
mov ecx, edi
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
push esi
call fcn.0042d120
mov eax, dword [esi]
cmp dword [esi + 4], eax
je 0x40130d
mov edi, 0xfffffff4
lea ecx, [ebx + ebx*2]
mov dword [esp + 0x18], ebx
movzx edx, byte [eax + ecx*4 + 0xb]
test dl, dl
jns 0x40118e
mov ebx, dword [eax + ecx*4]
mov edx, dword [eax + ecx*4 + 4]
jmp 0x401191
lea ebx, [eax + ecx*4]
lea esi, [esp + 0x130]
mov ecx, esi
push edx
push ebx
call fcn.0042e340
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
cmp ebx, eax
jae 0x4011c3
mov ecx, ebx
push esi
call fcn.0042e310
add ebx, 0xc
mov ecx, esi
mov dword [esp + 0x68], ebx
jmp 0x4012e8
mov esi, dword [esp + 0x64]
pcmpeqd xmm0, xmm0
mov dword [esp + 0x170], 0xffffffff
movdqa xmmword [esp + 0x160], xmm0
sub ebx, esi
sar ebx, 2
imul edx, ebx, 0xaaaaaaab
lea ecx, [edx + 1]
cmp ecx, 0x15555556
jae 0x402324
sub eax, esi
sar eax, 2
imul eax, eax, 0xaaaaaaab
lea esi, [eax + eax]
cmp esi, ecx
cmovb esi, ecx
cmp eax, 0xaaaaaaa
mov eax, 0x15555555
lea ecx, [esp + 0x160]
cmovae esi, eax
lea eax, [esp + 0x70]
push eax
push edx
push esi
call fcn.004028f6
mov ecx, dword [esp + 0x168]
lea eax, [esp + 0x130]
push eax
call fcn.0042e310
mov eax, dword [esp + 0x168]
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
add eax, 0xc
cmp ebx, esi
mov dword [esp + 0x168], eax
je 0x401299
mov ecx, dword [esp + 0x164]
sub esi, ebx
add ebx, 0xfffffff4
add ecx, edi
push ebx
call fcn.0042e310
mov ecx, dword [esp + 0x164]
add ebx, edi
add ecx, edi
add esi, 0xc
mov dword [esp + 0x164], ecx
jne 0x401269
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x168]
jmp 0x4012a2
mov ecx, dword [esp + 0x164]
mov edx, ebx
mov dword [esp + 0x164], edx
mov dword [esp + 0x168], ebx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], eax
mov ecx, dword [esp + 0x16c]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x6c], ecx
lea ecx, [esp + 0x160]
mov dword [esp + 0x16c], eax
mov dword [esp + 0x160], edx
call fcn.00402952
lea ecx, [esp + 0x130]
call fcn.0042e400
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x18]
sub ecx, eax
inc ebx
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
cmp ebx, ecx
jb 0x401175
mov ecx, dword [esp + 0x28]
xor edi, edi
lea esi, [esp + 0x48]
mov dword [esp + 0x54], 1
dec edi
mov dword [esi], edi
mov dword [esi + 4], edi
mov dword [esi + 8], edi
push 0x49e074
push esi
call fcn.0042c740
movzx ecx, byte [esi + 0xb]
test cl, cl
mov eax, ecx
jns 0x401341
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x401368
test cl, cl
jns 0x40134d
mov esi, dword [esp + 0x48]
lea ecx, [esp + 0x54]
push ecx
push eax
push esi
call fcn.00431b40
add esp, 0xc
test al, al
jne 0x401368
mov dword [esp + 0x54], 1
movzx eax, byte [esp + 0x10]
movzx ecx, byte [esp + 0x23]
movzx esi, byte [esp + 0x22]
movzx edx, byte [esp + 0x21]
movzx edi, byte [esp + 0x20]
add ecx, eax
add esi, ecx
add edx, esi
movzx esi, byte [esp + 0x1f]
add edi, edx
movzx edx, byte [esp + 0x1e]
add esi, edi
movzx edi, byte [esp + 0x1d]
add edx, esi
movzx esi, byte [esp + 0x17]
add edi, edx
movzx edx, byte [esp + 0xf]
add edi, esi
mov dword [esp + 0x40], esi
add edx, edi
cmp edx, 1
jne 0x402385
mov eax, dword [esp + 0x54]
lea ecx, [eax - 1]
test eax, eax
mov dword [esp + 0x54], ecx
jle 0x402250
cmp byte [esp + 0x10], 0
lea ecx, [esp + 0x130]
lea edi, [esp + 0x100]
mov dword [esp + 0x30], ecx
je 0x4014bf
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, edx
cmp eax, 0xc
jne 0x402405
xor ebx, ebx
lea esi, [esp + 0x160]
pcmpeqd xmm0, xmm0
dec ebx
movdqa xmmword [esi + 0x10], xmm0
movdqa xmmword [esi], xmm0
mov ecx, esi
mov dword [esi + 0x24], ebx
mov dword [esi + 0x20], ebx
mov dword [esi + 0x28], ebx
push str.input
call fcn.00402638
add esp, 4
lea eax, [esp + 0xf0]
mov dword [esp + 0x100], ebx
mov dword [eax], ebx
push eax
push edi
push dword [esi + 0x24]
push dword [esi + 0x20]
call fcn.0042b41e
add esp, 0x10
mov eax, 0x10
push eax
call fcn.00477160
add esp, 4
mov dword [esp + 0x130], eax
mov dword [eax + 7], 0x64657472
mov dword [eax + 4], 0x726f7070
mov dword [eax], 0x75736e55
mov byte [eax + 0xb], 0
mov eax, dword [esp + 0x100]
mov dword [esp + 0x138], 0x80000010
mov dword [esp + 0x134], 0xb
cmp eax, 1
je 0x40225b
cmp eax, 4
je 0x402254
cmp eax, 2
mov esi, 1
jne 0x40226f
mov eax, str.ELF_32_X86
jmp 0x402260
mov al, byte [esp + 0xf]
lea edx, [esp + 0xc8]
xor ebx, ebx
or al, byte [esp + 0x17]
mov byte [esp + 0xf], al
mov eax, 0xc
add edx, eax
mov dword [esp + 0x44], edx
lea edx, [esp + 0xf0]
add edx, eax
add eax, edi
mov dword [esp + 0x34], edx
mov edx, 4
mov dword [esp + 0x24], eax
lea esi, [ecx + edx]
lea ecx, [esp + 0x160]
lea eax, [edi + edx]
add edx, ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x2c], edx
cmp byte [esp + 0x23], 0
je 0x401620
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x18
jne 0x40232d
push 0x394
push 0xff
lea ebx, [esp + 0x168]
push ebx
call fcn.0047b380
add esp, 0xc
mov ecx, ebx
call fcn.00427dfa
xor eax, eax
pcmpeqd xmm0, xmm0
xor ebx, ebx
dec eax
movdqa xmmword [esp + 0x140], xmm0
movdqa xmmword [esp + 0x130], xmm0
mov dword [esp + 0x154], eax
mov dword [esp + 0x150], eax
mov dword [esp + 0x158], eax
push ebx
call fcn.00427ebc
add esp, 4
lea ecx, [esp + 0x130]
mov edx, esi
push eax
call fcn.00402638
add esp, 4
lea edi, [esp + 0x160]
lea eax, [esp + 0x130]
mov ecx, edi
push eax
push ebx
call fcn.00428038
mov ecx, edi
push ebx
push ebx
call fcn.0042818c
mov ecx, edi
push ebx
call fcn.00428250
mov ecx, edi
push ebx
call fcn.0042849c
mov ecx, edi
push ebx
call fcn.004284e2
mov ecx, edi
push ebx
push ebx
call fcn.0042837a
mov ecx, edi
push ebx
call fcn.00428546
xor eax, eax
mov ecx, edi
lea edi, [esp + 0x100]
dec eax
mov dword [esp + 0x10c], eax
mov dword [esp + 0x100], ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], ebx
push edi
push ebx
call fcn.0042830e
lea ecx, [esp + 0x160]
jmp 0x401702
cmp byte [esp + 0x22], 0
je 0x401789
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x18
jne 0x402341
push 0x394
push 0xff
lea ebx, [esp + 0x168]
push ebx
call fcn.0047b380
add esp, 0xc
mov ecx, ebx
call fcn.00427dfa
xor ebx, ebx
pcmpeqd xmm0, xmm0
xor eax, eax
dec ebx
movdqa xmmword [esp + 0x140], xmm0
movdqa xmmword [esp + 0x130], xmm0
mov dword [esp + 0x154], ebx
mov dword [esp + 0x150], ebx
mov dword [esp + 0x158], ebx
push eax
call fcn.00427ebc
add esp, 4
lea ecx, [esp + 0x130]
mov edx, esi
push eax
call fcn.00402638
add esp, 4
lea edi, [esp + 0x160]
lea eax, [esp + 0x130]
mov ecx, edi
push eax
xor eax, eax
push eax
call fcn.00427f20
mov ecx, edi
xor eax, eax
push eax
push eax
call fcn.00428114
mov dword [esp + 0x10c], ebx
xor eax, eax
mov ebx, edi
mov ecx, edi
lea edi, [esp + 0x100]
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], eax
mov dword [esp + 0x108], eax
xor eax, eax
push edi
push eax
call fcn.004283ee
mov ecx, ebx
call fcn.00427f04
test al, al
jne 0x40230a
add esi, 0xc
mov ecx, edi
mov edx, esi
call fcn.00402795
mov eax, dword [esp + 0x100]
mov ebx, 0
test eax, eax
je 0x401751
mov ecx, dword [esp + 0x24]
push dword [esp + 0x108]
push eax
call fcn.004027ca
mov dword [esp + 0x100], ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], ebx
mov dword [esp + 0x130], 0x49e308
mov ecx, dword [esp + 0x18]
call fcn.0042ff20
lea ecx, [esp + 0x160]
call fcn.00427e84
mov eax, dword [esp + 0x54]
lea ecx, [eax - 1]
test eax, eax
mov dword [esp + 0x54], ecx
jg 0x401512
jmp 0x402250
cmp byte [esp + 0x21], 0
je 0x4019a5
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x24
jne 0x40237b
lea eax, [esi + 0xc]
mov dword [esp + 0x10], eax
push 0x394
push 0xff
lea ebx, [esp + 0x168]
push ebx
call fcn.0047b380
add esp, 0xc
mov ecx, ebx
call fcn.00427dfa
xor eax, eax
pcmpeqd xmm0, xmm0
dec eax
xor edi, edi
movdqa xmmword [esp + 0x140], xmm0
movdqa xmmword [esp + 0x130], xmm0
inc edi
mov dword [esp + 0x154], eax
mov dword [esp + 0x150], eax
mov dword [esp + 0x158], eax
push edi
call fcn.00427ebc
add esp, 4
lea ecx, [esp + 0x130]
mov edx, esi
push eax
call fcn.00402638
add esp, 4
xor eax, eax
pcmpeqd xmm0, xmm0
dec eax
movdqa xmmword [esp + 0x110], xmm0
movdqa xmmword [esp + 0x100], xmm0
mov dword [esp + 0x124], eax
xor eax, eax
dec eax
mov dword [esp + 0x120], eax
xor eax, eax
dec eax
mov dword [esp + 0x128], eax
mov eax, 2
push eax
call fcn.00427ebc
add esp, 4
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x100]
push eax
call fcn.00402638
add esp, 4
lea eax, [esp + 0x130]
mov ecx, ebx
push eax
push edi
call fcn.00428038
mov ecx, ebx
push edi
push edi
call fcn.0042818c
mov ecx, ebx
push edi
call fcn.0042849c
lea eax, [esp + 0x100]
mov ecx, ebx
push eax
mov edi, 2
push edi
call fcn.00428038
xor eax, eax
mov ecx, ebx
inc eax
push eax
push edi
call fcn.0042818c
mov ecx, ebx
call fcn.0042845a
xor eax, eax
mov ecx, ebx
inc eax
push eax
call fcn.004284e2
mov edi, 2
mov ecx, ebx
push edi
call fcn.00428250
mov ecx, ebx
push edi
call fcn.004284e2
mov ecx, ebx
push edi
call fcn.0042849c
xor edi, edi
mov ecx, ebx
push edi
mov eax, 2
push eax
call fcn.0042837a
mov eax, 2
mov ecx, ebx
push eax
call fcn.00428546
xor eax, eax
mov ecx, ebx
dec eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0xf0], edi
mov dword [esp + 0xf4], edi
mov dword [esp + 0xf8], edi
lea edi, [esp + 0xf0]
push edi
mov eax, 2
push eax
call fcn.0042830e
mov ecx, ebx
call fcn.00427f04
test al, al
jne 0x40230a
add esi, 0x18
mov ecx, edi
mov edx, esi
call fcn.00402795
mov eax, dword [esp + 0xf0]
mov ebx, 0
test eax, eax
je 0x401984
mov ecx, dword [esp + 0x34]
push dword [esp + 0xf8]
push eax
call fcn.004027ca
mov dword [esp + 0xf0], ebx
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xf8], ebx
mov ecx, dword [esp + 0x38]
mov esi, 0x49e308
mov dword [esp + 0x100], esi
call fcn.0042ff20
mov dword [esp + 0x130], esi
jmp 0x40175c
cmp byte [esp + 0x20], 0
je 0x401b47
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x24
jne 0x4023ab
xor edi, edi
pcmpeqd xmm0, xmm0
lea eax, [esi + 0xc]
lea ecx, [esp + 0x160]
mov edx, esi
dec edi
mov dword [esp + 0x10], eax
movdqa xmmword [esp + 0x170], xmm0
movdqa xmmword [esp + 0x160], xmm0
mov dword [esp + 0x184], edi
mov dword [esp + 0x180], edi
mov dword [esp + 0x188], edi
push str.old_input
call fcn.00402638
add esp, 4
mov edx, dword [esp + 0x10]
pcmpeqd xmm0, xmm0
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edi
mov dword [esp + 0x158], edi
lea ecx, [esp + 0x130]
movdqa xmmword [esp + 0x140], xmm0
movdqa xmmword [esp + 0x130], xmm0
push str.new_input
call fcn.00402638
add esp, 4
mov eax, dword [esp + 0x180]
mov ecx, dword [esp + 0x184]
mov edx, dword [esp + 0x154]
mov dword [esp + 0x10c], edi
lea edi, [esp + 0x100]
mov dword [esp + 0x100], ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], ebx
add ecx, eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x150]
add edx, eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], edx
mov dword [esp + 0xd0], eax
push edi
lea eax, [esp + 0xcc]
push eax
lea eax, [esp + 0xf8]
push eax
call fcn.0042a34c
add esp, 0xc
cmp eax, 1
jne 0x4023b5
add esi, 0x18
mov ecx, edi
mov edx, esi
call fcn.00402795
mov eax, dword [esp + 0x100]
test eax, eax
je 0x401b1d
mov ecx, dword [esp + 0x24]
push dword [esp + 0x108]
push eax
call fcn.004027ca
mov dword [esp + 0x100], ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], ebx
mov ecx, dword [esp + 0x18]
mov esi, 0x49e308
mov dword [esp + 0x130], esi
call fcn.0042ff20
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x160], esi
call fcn.0042ff20
jmp 0x401771
cmp byte [esp + 0x1f], 0
je 0x401b72
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x24
jne 0x4023bf
cmp byte [esi + 0x23], bl
jns 0x401df0
mov eax, dword [esi + 0x18]
jmp 0x401df3
cmp byte [esp + 0x1e], 0
je 0x401cb1
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x24
jne 0x4023c9
xor edi, edi
pcmpeqd xmm0, xmm0
lea eax, [esi + 0xc]
lea ecx, [esp + 0x160]
mov edx, esi
dec edi
mov dword [esp + 0x10], eax
movdqa xmmword [esp + 0x170], xmm0
movdqa xmmword [esp + 0x160], xmm0
mov dword [esp + 0x184], edi
mov dword [esp + 0x180], edi
mov dword [esp + 0x188], edi
push str.old_input
call fcn.00402638
add esp, 4
mov edx, dword [esp + 0x10]
pcmpeqd xmm0, xmm0
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edi
mov dword [esp + 0x158], edi
lea ecx, [esp + 0x130]
movdqa xmmword [esp + 0x140], xmm0
movdqa xmmword [esp + 0x130], xmm0
push str.new_input
call fcn.00402638
add esp, 4
mov eax, dword [esp + 0x180]
mov ecx, dword [esp + 0x184]
mov edx, dword [esp + 0x154]
mov dword [esp + 0x10c], edi
lea edi, [esp + 0x100]
mov dword [esp + 0x100], ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], ebx
add ecx, eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x150]
add edx, eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], edx
mov dword [esp + 0xd0], eax
push edi
lea eax, [esp + 0xcc]
push eax
lea eax, [esp + 0xf8]
push eax
call fcn.00402f94
add esp, 0xc
test eax, eax
je 0x401ae0
jmp 0x4023d3
cmp byte [esp + 0x1d], 0
je 0x401e22
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x24
jne 0x4023dd
xor edi, edi
pcmpeqd xmm0, xmm0
lea eax, [esi + 0xc]
lea ecx, [esp + 0x160]
mov edx, esi
dec edi
mov dword [esp + 0x10], eax
movdqa xmmword [esp + 0x170], xmm0
movdqa xmmword [esp + 0x160], xmm0
mov dword [esp + 0x184], edi
mov dword [esp + 0x180], edi
mov dword [esp + 0x188], edi
push str.old_input
call fcn.00402638
add esp, 4
mov edx, dword [esp + 0x10]
pcmpeqd xmm0, xmm0
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edi
mov dword [esp + 0x158], edi
lea ecx, [esp + 0x130]
movdqa xmmword [esp + 0x140], xmm0
movdqa xmmword [esp + 0x130], xmm0
push str.patch_input
call fcn.00402638
add esp, 4
mov eax, dword [esp + 0x180]
mov ecx, dword [esp + 0x184]
mov edx, dword [esp + 0x154]
mov dword [esp + 0x10c], edi
lea edi, [esp + 0x100]
mov dword [esp + 0x100], ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], ebx
add ecx, eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x150]
add edx, eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], edx
mov dword [esp + 0xd0], eax
push edi
lea eax, [esp + 0xcc]
push eax
lea eax, [esp + 0xf8]
push eax
call fcn.00402d1f
add esp, 0xc
test eax, eax
je 0x401ae0
jmp 0x4023e7
lea eax, [esi + 0x18]
cmp byte [esi + 0x17], bl
lea edi, [esi + 0xc]
mov ecx, edi
jns 0x401e00
mov ecx, dword [esi + 0xc]
cmp byte [esi + 0xb], bl
mov edx, esi
jns 0x401e09
mov edx, dword [esi]
push eax
push ecx
push edx
call fcn.004290d2
add esp, 0xc
cmp eax, 1
je 0x401771
jmp 0x40234b
cmp byte [esp + 0xf], 0
je 0x4023f1
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
sub eax, esi
cmp eax, 0x24
jne 0x4023fb
lea eax, [esi + 0xc]
mov dword [esp + 0x10], eax
push 0x394
push 0xff
lea ebx, [esp + 0x168]
push ebx
call fcn.0047b380
add esp, 0xc
mov ecx, ebx
call fcn.00427dfa
xor edi, edi
pcmpeqd xmm0, xmm0
dec edi
xor eax, eax
movdqa xmmword [esp + 0x140], xmm0
movdqa xmmword [esp + 0x130], xmm0
inc eax
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edi
mov dword [esp + 0x158], edi
push eax
call fcn.00427ebc
add esp, 4
lea ecx, [esp + 0x130]
mov dword [esp + 0x3c], esi
mov edx, esi
push eax
call fcn.00402638
add esp, 4
pcmpeqd xmm0, xmm0
mov eax, 2
mov dword [esp + 0x124], edi
mov dword [esp + 0x120], edi
mov dword [esp + 0x128], edi
movdqa xmmword [esp + 0x110], xmm0
movdqa xmmword [esp + 0x100], xmm0
push eax
call fcn.00427ebc
add esp, 4
mov edx, dword [esp + 0x10]
xor esi, esi
lea ecx, [esp + 0x100]
inc esi
push eax
call fcn.00402638
add esp, 4
lea eax, [esp + 0x130]
mov ecx, ebx
push eax
push esi
call fcn.00428038
mov edi, dword [esp + 0x40]
mov ecx, ebx
push edi
push esi
call fcn.0042818c
mov ecx, ebx
push esi
call fcn.00428250
mov ecx, ebx
push esi
call fcn.0042849c
mov ecx, ebx
push 0
push esi
call fcn.0042837a
mov ecx, ebx
push esi
call fcn.00428546
lea eax, [esp + 0x100]
mov ecx, ebx
push eax
mov esi, 2
push esi
call fcn.00428038
mov ecx, ebx
push edi
push esi
call fcn.0042818c
cmp byte [esp + 0x17], 0
je 0x401f78
lea ecx, [esp + 0x160]
call fcn.0042845a
lea esi, [esp + 0x160]
mov ecx, esi
push 1
call fcn.004284e2
mov edi, 2
mov ecx, esi
push edi
call fcn.00428250
mov ecx, esi
push edi
call fcn.004284e2
mov ecx, esi
push edi
call fcn.0042849c
mov ecx, esi
push 0
push edi
call fcn.0042837a
mov ecx, esi
push edi
call fcn.00428546
mov ecx, esi
call fcn.00427f04
test al, al
jne 0x40230a
add dword [esp + 0x3c], 0x18
xor ebx, ebx
mov edi, 0x10
mov dword [esp + 0xfc], 0xffffffff
mov dword [esp + 0xf0], ebx
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xf8], ebx
lea ecx, [esp + 0x160]
push 1
call fcn.00427ed4
cmp dword [eax + 0xc], ebx
mov dword [esp + 0x28], edi
ja 0x40200d
xor esi, esi
jmp 0x402011
mov esi, eax
add esi, edi
lea ecx, [esp + 0x160]
push 2
call fcn.00427ed4
cmp dword [eax + 0xc], ebx
mov dword [esp + 0x10], ebx
ja 0x40202c
xor edi, edi
jmp 0x402032
mov edi, eax
add edi, dword [esp + 0x28]
mov eax, esi
lea ebx, [esp + 0xf0]
or eax, edi
je 0x40194e
test esi, esi
mov eax, 0
lea ecx, [esp + 0xe4]
cmove esi, ebx
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xe0], eax
push esi
call fcn.0040d678
test edi, edi
mov eax, ebx
je 0x40208c
mov eax, edi
lea esi, [esp + 0xd8]
mov ecx, esi
push eax
call fcn.0040d678
xor ebx, ebx
lea eax, [esp + 0xc8]
mov dword [esp + 0xd4], 0xffffffff
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xd0], ebx
push eax
push esi
lea eax, [esp + 0xec]
push eax
call fcn.00402f94
add esp, 0xc
test eax, eax
jne 0x402337
xor eax, eax
dec eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], eax
push dword [esp + 0x10]
lea esi, [esp + 0xb0]
push esi
call fcn.00431790
add esp, 8
movzx eax, byte [esp + 0xb7]
mov edx, esi
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x28]
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xa4], ebx
mov byte [esp + 0xab], 1
mov word [esp + 0xa0], 0x2d
test al, al
jns 0x402155
mov eax, dword [esp + 0xb0]
mov edx, dword [esp + 0xac]
lea ecx, [esp + 0xa0]
push eax
push edx
call fcn.00426310
mov ecx, dword [eax + 8]
mov dword [esp + 0xc0], ecx
movq xmm0, qword [eax]
movq qword [esp + 0xb8], xmm0
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax], ebx
cmp byte [esp + 0xab], bl
jns 0x40219a
push dword [esp + 0xa0]
call fcn.00477190
add esp, 4
cmp byte [esp + 0xb7], 0
jns 0x4021b3
push dword [esp + 0xac]
call fcn.00477190
add esp, 4
movzx eax, byte [esp + 0xc3]
lea edx, [esp + 0xb8]
test al, al
jns 0x4021d4
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xbc]
mov ecx, esi
push eax
push edx
lea esi, [esp + 0xb4]
push esi
call fcn.0042fa40
lea ecx, [esp + 0xc8]
mov edx, esi
call fcn.00402795
mov ecx, esi
call fcn.0042e400
cmp byte [esp + 0xc3], bl
jns 0x402212
push dword [esp + 0xb8]
call fcn.00477190
add esp, 4
mov eax, dword [esp + 0xc8]
test eax, eax
je 0x402243
mov ecx, dword [esp + 0x44]
push dword [esp + 0xd0]
push eax
call fcn.004027ca
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xd0], ebx
mov ebx, dword [esp + 0x10]
add edi, 0x10
inc ebx
jmp 0x401ff2
xor esi, esi
jmp 0x4022c1
mov eax, str.Windows_64_PE
jmp 0x402260
mov eax, str.Windows_32_PE
lea ecx, [esp + 0x130]
push eax
call fcn.004265ec
xor esi, esi
xor ebx, ebx
cmp byte [esp + 0x13b], bl
jns 0x402285
mov eax, dword [esp + 0x130]
mov dword [esp + 0x30], eax
push dword [esp + 0x30]
push str._s_Executable_n
call fcn.00402698
add esp, 8
cmp byte [esp + 0x13b], bl
jns 0x4022ae
push dword [esp + 0x130]
call fcn.00477190
add esp, 4
lea ecx, [esp + 0x164]
mov dword [ecx - 4], 0x49e308
call fcn.0042ff20
cmp byte [esp + 0x53], 0
jns 0x4022d4
push dword [esp + 0x48]
call fcn.00477190
add esp, 4
lea ecx, [esp + 0x58]
call fcn.004028a4
lea ecx, [esp + 0x64]
call fcn.00402858
lea ecx, [esp + 0x80]
call fcn.0042b4e0
mov ecx, dword [esp + 0x4f8]
xor ecx, ebp
call fcn.004771d1
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea ecx, [esp + 0x160]
call fcn.00427f18
cmp byte [eax + 0xb], 0
jns 0x40231e
mov eax, dword [eax]
push eax
call fcn.004026ed
lea ecx, [esp + 0x64]
call fcn.0042772c
mov ecx, str._dis__exec_file_in___assembly_file_out_
call fcn.0040250f
push str._xxx_failed.
call fcn.004026ed
mov ecx, str._asm__assembly_file_in___exec_file_out_
call fcn.0040250f
mov ebx, eax
cmp eax, 6
mov dword [esp + 0x18], edi
jle 0x40238f
cmp ebx, 7
je 0x40240f
cmp ebx, 0x14
je 0x402419
cmp ebx, 0x19
jne 0x40242d
push str.Disassembly_failed__could_be_because_of_memory_issues_
call fcn.004026ed
mov ecx, str._disadj__old_in___new_in___new_assembly_file_out_
call fcn.0040250f
mov ecx, str.First_argument_must_be_one_of:_n___supported___asm___dis___disadj___gen___apply___genbsdiff___applybsdiff__or__gen1_au_.
call fcn.0040250f
cmp ebx, 5
je 0x402423
cmp ebx, 6
jne 0x40242d
push str.Wrong_version_patch
call fcn.004026ed
mov ecx, str._gen__old_in___new_in___patch_out_
call fcn.0040250f
push str._gen_failed.
call fcn.004026ed
mov ecx, str._apply__old_in___patch_in___new_out_
call fcn.0040250f
mov ecx, str._genbsdiff__old_in___new_in___patch_out_
call fcn.0040250f
push str._genbsdiff_failed.
call fcn.004026ed
mov ecx, str._applybsdiff__old_in___patch_in___new_out_
call fcn.0040250f
push str._applybsdiff_failed.
call fcn.004026ed
mov ecx, str.No_operation_specified
call fcn.0040250f
mov ecx, str._gen1_au___old_in___new_in___patch_base_out_
call fcn.0040250f
mov ecx, str._supported__exec_file_in_
call fcn.0040250f
push str.Corrupt_patch
call fcn.004026ed
push str.Stream_error__likely_out_of_memory_or_disk_space_
call fcn.004026ed
push str.Not_a_courgette_patch
call fcn.004026ed
xor eax, eax
pcmpeqd xmm0, xmm0
lea edi, [esp + 0x160]
mov edx, esi
dec eax
movdqa xmmword [esp + 0x170], xmm0
movdqa xmmword [esp + 0x160], xmm0
mov ecx, edi
mov dword [esp + 0x184], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x188], eax
push str.old_input
call fcn.00402638
add esp, 4
mov ecx, 4
mov esi, edi
mov eax, 0x49e308
or esi, ecx
mov dword [esp + 0x160], eax
mov ecx, esi
call fcn.0042ff20
mov edx, dword [esp + 0x18]
xor eax, eax
pcmpeqd xmm0, xmm0
mov ecx, edi
dec eax
movdqa xmmword [esp + 0x170], xmm0
movdqa xmmword [esp + 0x160], xmm0
mov dword [esp + 0x184], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x188], eax
push str.patch_input
call fcn.00402638
add esp, 4
mov eax, 0x49e308
mov ecx, esi
mov dword [esp + 0x160], eax
call fcn.0042ff20
mov eax, 4
cmp ebx, eax
je 0x4024fb
cmp ebx, 3
jne 0x402505
push str.Cant_open_output
call fcn.004026ed
push str.Cant_write_output
call fcn.004026ed
push str._apply_failed.
call fcn.004026ed