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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x14], eax
mov ebx, eax
mov eax, dword [sym.imp.cygwin1.dll___stack_chk_guard]
mov dword [esp + 0x4c], eax
xor eax, eax
mov dword [esp + 0x18], edi
test ebp, ebp
je 0x46912c
mov ecx, dword [edi + 8]
mov eax, dword [edi + 4]
mov edx, ecx
mov dword [esp + 0x1c], ecx
sub edx, eax
sar edx, 2
imul edx, edx, 0xaaaaaaab
cmp edx, ebp
jae 0x469148
mov ebx, dword [esp + 0x18]
mov ecx, 0xaaaaaaa
mov edx, dword [ebx]
sub eax, edx
sar eax, 2
imul eax, eax, 0xaaaaaaab
sub ecx, eax
cmp ebp, ecx
ja 0x4694ec
cmp ebp, eax
mov ecx, eax
mov ebx, dword [esp + 0x14]
cmovae ecx, ebp
add eax, ecx
setb cl
sub ebx, edx
mov dword [esp + 0x24], eax
movzx ecx, cl
mov dword [esp + 0x28], ebx
test ecx, ecx
jne 0x469310
test eax, eax
jne 0x4694ca
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
add eax, dword [esp + 0x28]
mov edi, ebp
mov dword [esp + 0x2c], eax
mov ebx, eax
jmp 0x468fcf
cmp ecx, sym.imp.cygstdc_6.dll_std::string::_Rep::_S_empty_rep_storage
jne 0x469498
mov dword [ebx], eax
mov eax, dword [esi + 4]
add ebx, 0xc
movzx edx, byte [esi + 8]
mov dword [ebx - 8], eax
movzx eax, byte [ebx - 4]
and edx, 7
and eax, 0xfffffff8
or eax, edx
mov byte [ebx - 4], al
sub edi, 1
je 0x469000
mov eax, dword [esi]
lea edx, [eax - 4]
lea ecx, [eax - 0xc]
mov dword [esp + 0x1c], edx
mov edx, dword [eax - 4]
test edx, edx
jns 0x468fa0
lea eax, [esp + 0x3b]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00451178
jmp 0x468fac
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
mov ebx, dword [eax]
mov eax, ebx
cmp dword [esp + 0x14], ebx
je 0x46906c
lea esi, [esi]
lea esi, [esi]
mov ecx, dword [eax]
add eax, 0xc
add edx, 0xc
mov dword [edx - 0xc], ecx
mov ecx, dword [eax - 8]
mov dword [eax - 0xc], 0x4aa6bc
movzx edi, byte [eax - 4]
mov dword [edx - 8], ecx
movzx ecx, byte [edx - 4]
and edi, 7
and ecx, 0xfffffff8
or ecx, edi
mov byte [edx - 4], cl
cmp esi, eax
jne 0x469020
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
sub eax, 0xc
sub eax, ebx
shr eax, 2
imul eax, eax, 0x2aaaaaab
lea eax, [eax + eax*2]
lea edx, [edi + eax*4 + 0xc]
lea eax, [ebp + ebp*2]
lea ebp, [edx + eax*4]
mov eax, dword [esp + 0x18]
mov edi, dword [eax + 4]
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x4690cf
mov edx, ebp
lea esi, [esi]
mov ecx, dword [eax]
movzx esi, byte [eax + 8]
mov dword [eax], method.std::string.swap_std::string_
add eax, 0xc
add edx, 0xc
mov dword [edx - 0xc], ecx
mov ecx, dword [eax - 8]
and esi, 7
mov dword [edx - 8], ecx
movzx ecx, byte [edx - 4]
and ecx, 0xfffffff8
or ecx, esi
mov byte [edx - 4], cl
cmp edi, eax
jne 0x469088
mov eax, edi
sub eax, dword [esp + 0x14]
sub eax, 0xc
shr eax, 2
imul eax, eax, 0x2aaaaaab
lea eax, [eax + eax*2]
lea ebp, [ebp + eax*4 + 0xc]
cmp ebx, edi
je 0x4690f5
lea esi, [esi]
nop
mov eax, dword [ebx]
lea edx, [eax - 0xc]
cmp eax, method.std::string.swap_std::string_
jne 0x469330
add ebx, 0xc
cmp edi, ebx
jne 0x4690d8
mov eax, dword [esp + 0x18]
mov edi, dword [eax]
test edi, edi
je 0x469112
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 8]
mov dword [esp], edi
mov dword [esp + 0x14], eax
sub eax, edi
mov dword [esp + 4], eax
call sub.cygstdc_6.dll_operator_delete_void__unsigned_int_
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
lea eax, [eax + eax*2]
lea eax, [esi + eax*4]
mov dword [ebx], esi
mov dword [ebx + 4], ebp
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x4c]
sub eax, dword [sym.imp.cygwin1.dll___stack_chk_guard]
jne 0x4694e7
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esi]
mov dword [esp + 0x3c], edi
mov edx, dword [eax - 4]
lea ecx, [eax - 0xc]
lea edi, [eax - 4]
test edx, edx
js 0x4692f0
cmp ecx, sym.imp.cygstdc_6.dll_std::string::_Rep::_S_empty_rep_storage
jne 0x4694b5
mov dword [esp + 0x40], eax
mov eax, dword [esi + 4]
movzx edx, byte [esi + 8]
mov dword [esp + 0x44], eax
movzx eax, byte [esp + 0x48]
and edx, 7
and eax, 0xfffffff8
or eax, edx
mov byte [esp + 0x48], al
mov eax, dword [esp + 0x18]
mov edi, dword [eax + 4]
mov eax, edi
sub eax, dword [esp + 0x14]
mov dword [esp + 0x20], eax
sar eax, 2
imul eax, eax, 0xaaaaaaab
cmp ebp, eax
jae 0x469360
lea eax, [ebp + ebp*2]
mov esi, edi
mov edx, edi
shl eax, 2
sub esi, eax
mov dword [esp + 0x1c], eax
mov eax, esi
cmp esi, edi
je 0x4691f7
lea esi, [esi]
mov ecx, dword [eax]
add eax, 0xc
add edx, 0xc
mov dword [edx - 0xc], ecx
mov ecx, dword [eax - 8]
mov dword [eax - 0xc], 0x4aa6bc
movzx ebp, byte [eax - 4]
mov dword [edx - 8], ecx
movzx ecx, byte [edx - 4]
and ebp, 7
and ecx, 0xfffffff8
or ecx, ebp
mov byte [edx - 4], cl
cmp edi, eax
jne 0x4691c8
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
add eax, edi
mov dword [ecx + 4], eax
mov eax, esi
sub eax, dword [esp + 0x14]
mov ebp, eax
sar ebp, 2
imul ebp, ebp, 0xaaaaaaab
test eax, eax
jle 0x46926e
lea esi, [esi]
sub edi, 0xc
sub esi, 0xc
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.00451168
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
movzx eax, byte [edi + 8]
movzx edx, byte [esi + 8]
and eax, 0xfffffffe
and edx, 1
or eax, edx
mov byte [edi + 8], al
movzx edx, byte [esi + 8]
and eax, 0xfffffffd
and edx, 2
or eax, edx
mov byte [edi + 8], al
movzx edx, byte [esi + 8]
and eax, 0xfffffffb
and edx, 4
or eax, edx
mov byte [edi + 8], al
sub ebp, 1
jne 0x469220
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea esi, [esp + 0x40]
add edi, eax
cmp eax, edi
je 0x4692ae
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.00451128
mov eax, dword [esp + 0x44]
movzx edx, byte [esp + 0x48]
add ebx, 0xc
mov dword [ebx - 8], eax
movzx eax, byte [ebx - 4]
and edx, 7
and eax, 0xfffffff8
or eax, edx
mov byte [ebx - 4], al
cmp edi, ebx
jne 0x469280
mov eax, dword [esp + 0x40]
lea edx, [eax - 0xc]
cmp eax, method.std::string.swap_std::string_
je 0x46912c
mov ecx, 0xffffffff
lock xadd dword [eax - 4], ecx
test ecx, ecx
jg 0x46912c
lea eax, [esp + 0x3b]
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.00451180
jmp 0x46912c
lea eax, [esp + 0x3b]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00451178
jmp 0x46916b
mov dword [esp + 0x24], 0xaaaaaaa
mov eax, 0x7ffffff8
mov dword [esp], eax
call sub.cygwin1.dll___wrap__Znwj
mov dword [esp + 0x20], eax
jmp 0x468f88
mov ecx, 0xffffffff
lock xadd dword [eax - 4], ecx
test ecx, ecx
jg 0x4690e8
lea eax, [esp + 0x3b]
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.00451180
jmp 0x4690e8
mov esi, edi
sub ebp, eax
jne 0x4693c1
jmp 0x4693f0
cmp edx, sym.imp.cygstdc_6.dll_std::string::_Rep::_S_empty_rep_storage
jne 0x4694a8
mov dword [esi], eax
mov eax, dword [esp + 0x44]
add esi, 0xc
mov dword [esi - 8], eax
movzx eax, byte [esi - 4]
movzx edx, byte [esp + 0x48]
and eax, 0xfffffffe
and edx, 1
or eax, edx
mov byte [esi - 4], al
movzx edx, byte [esp + 0x48]
and eax, 0xfffffffd
and edx, 2
or eax, edx
mov byte [esi - 4], al
movzx edx, byte [esp + 0x48]
and eax, 0xfffffffb
and edx, 4
or eax, edx
mov byte [esi - 4], al
sub ebp, 1
je 0x4693f0
mov eax, dword [esp + 0x40]
lea ecx, [eax - 4]
lea edx, [eax - 0xc]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax - 4]
test ecx, ecx
jns 0x469370
lea eax, [esp + 0x3b]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], edx
call fcn.00451178
jmp 0x46937c
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov dword [eax + 4], esi
mov eax, dword [esp + 0x14]
add ecx, esi
cmp eax, edi
je 0x4694be
lea esi, [esi]
mov edx, dword [eax]
add eax, 0xc
add esi, 0xc
mov dword [esi - 0xc], edx
mov edx, dword [eax - 8]
mov dword [eax - 0xc], 0x4aa6bc
movzx ebp, byte [eax - 4]
mov dword [esi - 8], edx
movzx edx, byte [esi - 4]
and ebp, 7
and edx, 0xfffffff8
or edx, ebp
mov byte [esi - 4], dl
cmp edi, eax
jne 0x469410
mov eax, dword [esp + 0x18]
lea esi, [esp + 0x40]
mov dword [eax + 4], ecx
lea esi, [esi]
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.00451128
mov eax, dword [esp + 0x44]
movzx edx, byte [esp + 0x48]
add ebx, 0xc
mov dword [ebx - 8], eax
movzx eax, byte [ebx - 4]
and edx, 7
and eax, 0xfffffff8
or eax, edx
mov byte [ebx - 4], al
cmp edi, ebx
jne 0x469450
mov eax, dword [esp + 0x40]
lea edx, [eax - 0xc]
cmp eax, method.std::string.swap_std::string_
je 0x46912c
jmp 0x4692c0
mov ecx, dword [esp + 0x1c]
lock add dword [ecx], 1
jmp 0x468fac
mov ecx, dword [esp + 0x1c]
lock add dword [ecx], 1
jmp 0x46937c
lock add dword [edi], 1
jmp 0x46916b
mov eax, dword [esp + 0x18]
mov dword [eax + 4], ecx
jmp 0x4692ae
mov ebx, dword [esp + 0x24]
mov eax, 0xaaaaaaa
cmp ebx, eax
cmovbe eax, ebx
mov dword [esp + 0x24], eax
lea eax, [eax + eax*2]
shl eax, 2
jmp 0x46931d
call sub.cygwin1.dll___stack_chk_fail
mov dword [esp], 0x47950a
call fcn.00450ff0
jmp 0x469500
mov dword [esp], eax
call sub.cygstdc_6.dll___cxa_begin_catch
mov esi, dword [esp + 0x2c]
cmp ebx, esi
je 0x469558
mov dword [esp], esi
add esi, 0xc
call fcn.004510f0
jmp 0x46950c
call sub.cygstdc_6.dll___cxa_rethrow
mov ebx, eax
call sub.cygstdc_6.dll___cxa_end_catch
mov dword [esp], ebx
call sub.cygstdc_6.dll___cxa_begin_catch
cmp dword [esp + 0x20], 0
je 0x46958d
imul eax, dword [esp + 0x24], 0xc
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call sub.cygstdc_6.dll_operator_delete_void__unsigned_int_
call sub.cygstdc_6.dll___cxa_rethrow
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
sar ebx, 2
imul ebx, ebx, 0xaaaaaaab
add ebx, ebp
imul ebx, ebx, 0xc
cmp ebx, esi
je 0x469588
mov dword [esp], esi
add esi, 0xc
call fcn.004510f0
jmp 0x4695a3