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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov ecx, dword [esp + 0x70]
movzx eax, byte [esp + 0x70]
mov esi, dword [esp + 0x74]
test ecx, ecx
mov byte [esp + 0x2b], al
js 0x40b9c0
cmp byte [esp + 0x70], 0
je 0x40b422
mov edx, dword [esp + 0x78]
mov eax, esi
call fcn.0040a6a0
mov edx, dword [0x4d5168]
mov dword [esp + 0x1c], eax
movzx eax, byte [edx]
cmp al, 0x20
je 0x40b994
cmp byte [eax + 0x499100], 0
jne 0x40b390
cmp eax, 0x2d
je 0x40b976
jle 0x40b3c0
cmp eax, 0x3d
je 0x40ba0a
jle 0x40b43b
cmp eax, 0x3e
je 0x40b9e1
cmp eax, 0x7c
jne 0x40b976
cmp byte [edx + 1], 0x7c
mov eax, 0x1c
mov ecx, 0xf
mov edi, eax
sete bl
cmovne edi, ecx
movzx ebx, bl
mov ebp, edi
mov dword [esp + 0x24], ebx
add dword [esp + 0x24], 1
lea esi, [esi]
movsx eax, byte [edi + 0x499040]
cmp al, byte [esp + 0x70]
jle 0x40b390
mov ebx, ebp
jmp 0x40b213
cmp eax, 0x2d
je 0x40b610
jle 0x40b510
cmp eax, 0x3d
je 0x40b790
jle 0x40b6e0
cmp eax, 0x3e
je 0x40b760
cmp eax, 0x7c
jne 0x40b610
xor eax, eax
mov ebp, 0x1c
cmp byte [edx + 1], 0x7c
sete al
mov dword [esp + 0x24], eax
mov eax, 0xf
add dword [esp + 0x24], 1
cmp byte [edx + 1], 0x7c
cmovne ebp, eax
nop
lea esi, [esi]
cmp ebx, 0x1d
je 0x40b0e8
movzx eax, byte [edi + 0x499040]
cmp byte [ebp + 0x499040], al
jg 0x40b633
cmp edi, 9
jle 0x40b285
cmp edi, 0x1d
jle 0x40b112
mov dword [esp + 8], 0x49e4f9
mov dword [esp + 4], 0x716
mov dword [esp], str..._.._binutils_gas_expr.c
call fcn.00412570
cmp byte [esi + 0xc], 6
je 0x40b2ab
cmp byte [esp + 0x4c], 6
je 0x40b2e5
cmp ebx, 0x13
je 0x40b323
cmp ebx, 0x14
je 0x40b4b8
movzx eax, byte [esi + 0xc]
cmp al, 2
je 0x40b560
cmp al, 3
je 0x40b5c0
mov dword [esp], esi
call fcn.00409c00
mov dword [esi], eax
lea eax, [esp + 0x40]
mov dword [esp], eax
call fcn.00409c00
mov byte [esi + 0xc], bl
mov dword [esi + 8], 0
mov dword [esi + 4], eax
movzx eax, byte [esi + 0xd]
or eax, 1
and eax, 0xfffffffd
mov byte [esi + 0xd], al
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x20], eax
je 0x40b1f0
cmp dword [esp + 0x1c], 0x49a088
je 0x40b1f0
mov ecx, dword [esp + 0x20]
cmp ecx, 0x49a088
je 0x40b6d0
mov eax, dword [0x4d502c]
mov edi, dword [esp + 0x1c]
cmp eax, edi
je 0x40b1f0
cmp ecx, eax
je 0x40b600
mov eax, dword [0x4d504c]
cmp eax, edi
je 0x40b1f0
cmp ecx, eax
je 0x40b600
cmp ecx, 0x49a130
je 0x40b1f0
cmp edi, 0x49a130
je 0x40b600
cmp ebx, 0x14
je 0x40b1f0
mov dword [esp], str.operation_combines_symbols_in_different_segments
call fcn.00412440
lea esi, [esi]
test ebp, ebp
je 0x40b390
movsx eax, byte [ebp + 0x499040]
mov edi, ebp
cmp byte [esp + 0x2b], al
jge 0x40b390
mov edx, dword [0x4d5168]
mov ebx, ebp
mov ecx, dword [esp + 0x78]
add edx, dword [esp + 0x24]
mov dword [esp], eax
mov dword [esp + 8], ecx
lea ecx, [esp + 0x40]
mov dword [0x4d5168], edx
xor edx, edx
mov dword [esp + 4], ecx
mov word [esp + 0x4e], dx
call fcn.0040afb0
cmp byte [esp + 0x4c], 1
mov dword [esp + 0x20], eax
je 0x40b680
mov edx, dword [0x4d5168]
movzx eax, byte [edx]
cmp al, 0x20
je 0x40b654
cmp ebx, 0x1d
je 0x40b496
cmp byte [eax + 0x499100], 0
je 0x40b078
xor ebp, ebp
cmp edi, 9
mov dword [esp + 0x24], 1
jg 0x40b0f1
mov dword [esp + 8], 0x49e4f9
mov dword [esp + 4], 0x714
mov dword [esp], str..._.._binutils_gas_expr.c
call fcn.00412570
cmp byte [esi + 0xc], 6
jne 0x40b11c
mov eax, dword [esi + 8]
test eax, eax
jle 0x40b7d2
mov dword [esp], str.left_operand_is_a_bignum__integer_0_assumed
call fcn.00412380
cmp byte [esp + 0x4c], 6
mov byte [esi + 0xc], 2
mov dword [esi + 8], 0
mov dword [esi], 0
mov dword [esi + 4], 0
jne 0x40b127
mov eax, dword [esp + 0x48]
test eax, eax
jle 0x40b7e3
mov dword [esp], str.right_operand_is_a_bignum__integer_0_assumed
call fcn.00412380
cmp ebx, 0x13
mov byte [esp + 0x4c], 2
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
jne 0x40b130
movzx edx, byte [esp + 0x4c]
cmp dl, 2
je 0x40b721
movzx eax, byte [esi + 0xc]
cmp al, 2
jne 0x40b145
mov eax, dword [esp + 0x40]
mov byte [esi + 0xc], dl
movzx edx, byte [esi + 0xd]
mov ebx, dword [esi + 8]
mov ecx, dword [esp + 0x48]
mov dword [esi], eax
mov eax, dword [esp + 0x44]
add ecx, ebx
mov dword [esi + 4], eax
movzx eax, byte [esp + 0x4d]
mov dword [esi + 8], ecx
xor eax, edx
shr al, 1
and eax, 1
cmp ebx, ecx
jbe 0x40b370
xor eax, 1
add eax, eax
and edx, 0xfffffffd
or edx, eax
test ebp, ebp
mov byte [esi + 0xd], dl
mov eax, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
jne 0x40b1f8
lea esi, [esi]
mov eax, dword [esi]
test eax, eax
je 0x40b39e
mov dword [esp], eax
call fcn.0041e020
cmp byte [esp + 0x70], 0
je 0x40b410
cmp byte [esi + 0xc], 2
mov eax, 0x49a130
cmovne eax, dword [esp + 0x1c]
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, 0x26
je 0x40b477
cmp eax, 0x2b
je 0x40b976
cmp eax, 0x21
jne 0x40b976
movzx eax, byte [edx + 1]
cmp al, 0x21
je 0x40bc4d
cmp al, 0x3d
mov ebx, 0x10
mov ebp, 0x16
sete cl
mov edi, ebx
movzx ecx, cl
cmove edi, ebp
mov dword [esp + 0x24], ecx
mov ebp, edi
add dword [esp + 0x24], 1
jmp 0x40b060
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x40b3a5
mov dword [esp], esi
call fcn.00409f20
jmp 0x40b3a5
call fcn.0040c7a0
mov dword [0x4d52e0], eax
mov eax, dword [0x4d5010]
mov dword [0x4d52e8], eax
jmp 0x40afdb
cmp eax, 0x3c
jne 0x40b976
movzx eax, byte [edx + 1]
cmp al, 0x3d
je 0x40bc57
cmp al, 0x3e
je 0x40bb9c
cmp al, 0x3c
je 0x40bc6e
mov edi, 0x17
mov ebp, 0x17
mov dword [esp + 0x24], 1
jmp 0x40b060
xor eax, eax
cmp byte [edx + 1], 0x26
sete al
mov edi, eax
lea edi, [edi + edi*8 + 0x12]
mov dword [esp + 0x24], eax
mov ebp, edi
add dword [esp + 0x24], 1
jmp 0x40b060
cmp al, 0x5d
je 0x40b6b0
mov dword [esp], str.missing_right_bracket
call fcn.00412440
mov edx, dword [0x4d5168]
movzx eax, byte [edx]
jmp 0x40b265
movzx eax, byte [esp + 0x4c]
cmp al, 3
je 0x40b5a0
cmp al, 2
jne 0x40b139
mov ecx, dword [esi + 8]
movzx eax, byte [esp + 0x4d]
mov edx, ecx
sub edx, dword [esp + 0x48]
mov dword [esi + 8], edx
movzx edx, byte [esi + 0xd]
xor eax, edx
and edx, 0xfffffffd
shr al, 1
and eax, 1
lea edi, [eax + eax]
or edx, edi
mov byte [esi + 0xd], dl
cmp ecx, dword [esp + 0x48]
jae 0x40b17d
xor eax, 1
and edx, 0xfffffffd
add eax, eax
or edx, eax
mov byte [esi + 0xd], dl
jmp 0x40b17d
cmp eax, 0x26
je 0x40b7b5
cmp eax, 0x2b
je 0x40b610
cmp eax, 0x21
jne 0x40b610
movzx eax, byte [edx + 1]
cmp al, 0x21
je 0x40b860
xor ecx, ecx
cmp al, 0x3d
sete cl
mov ebp, 0x10
mov dword [esp + 0x24], ecx
add dword [esp + 0x24], 1
cmp al, 0x3d
mov eax, 0x16
cmove ebp, eax
jmp 0x40b0d0
cmp byte [esp + 0x4c], 2
jne case.0x40b58f.19
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x40b808
lea eax, [ebx - 0xb]
cmp eax, 1
jbe 0x40bc20
lea eax, [ebx - 0xa]
cmp eax, 0x12
ja case.0x40b58f.19
jmp dword [eax*4 + 0x49e494]
not ecx
or dword [esi + 8], ecx
jmp 0x40b17d
movzx eax, byte [esi + 0xc]
cmp al, 3
jne 0x40b13d
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x1c], eax
je 0x40bbb3
lea esi, [esi]
cmp byte [esp + 0x4c], 3
jne case.0x40b58f.19
lea eax, [ebx - 0x13]
cmp eax, 1
jbe 0x40b8a8
mov ecx, dword [esi + 8]
test ecx, ecx
jne case.0x40b58f.19
mov edx, dword [esp + 0x48]
test edx, edx
jne case.0x40b58f.19
mov eax, dword [esp + 0x40]
mov byte [esi + 0xc], bl
mov dword [esi + 4], eax
jmp 0x40b17d
mov eax, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
jmp 0x40b1f0
mov edx, dword [eax*4 + 0x49e520]
mov dword [esp + 0x24], 1
test edx, edx
mov ebp, edx
setne al
test al, al
jne 0x40b0d0
jmp 0x40b0e8
mov dword [esp + 8], 0x49e4f9
mov dword [esp + 4], 0x713
mov dword [esp], str..._.._binutils_gas_expr.c
call fcn.00412570
jmp 0x40b0e8
mov dword [esp + 8], 0x49e4f9
mov dword [esp + 4], 0x703
mov dword [esp], str..._.._binutils_gas_expr.c
call fcn.00412570
mov edx, dword [0x4d5168]
movzx eax, byte [edx]
jmp 0x40b25c
mov dword [esp], str.missing_operand__zero_assumed
call fcn.00412380
mov byte [esp + 0x4c], 2
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
jmp 0x40b24b
lea ecx, [edx + 1]
mov dword [0x4d5168], ecx
movzx eax, byte [edx + 1]
cmp al, 0x20
je 0x40b7f4
mov edx, ecx
jmp 0x40b265
mov dword [esp + 0x1c], str.UND
jmp 0x40b1f0
cmp eax, 0x3c
jne 0x40b610
movzx eax, byte [edx + 1]
cmp al, 0x3d
je 0x40b896
cmp al, 0x3e
je 0x40b884
xor ecx, ecx
cmp al, 0x3c
sete cl
mov ebp, 0x17
mov dword [esp + 0x24], ecx
add dword [esp + 0x24], 1
cmp al, 0x3c
mov eax, 0xd
cmove ebp, eax
jmp 0x40b0d0
movzx edx, byte [esi + 0xd]
movzx eax, byte [esp + 0x4d]
mov edi, dword [esi + 8]
mov ecx, dword [esp + 0x48]
xor eax, edx
and edx, 0xfffffffd
shr al, 1
add ecx, edi
and eax, 1
mov dword [esp + 0x2c], ecx
mov dword [esi + 8], ecx
lea ecx, [eax + eax]
or edx, ecx
mov byte [esi + 0xd], dl
cmp edi, dword [esp + 0x2c]
jbe 0x40b17d
jmp 0x40b4fe
movzx eax, byte [edx + 1]
cmp al, 0x3d
je 0x40b872
xor ecx, ecx
cmp al, 0x3e
sete cl
mov ebp, 0x1a
mov dword [esp + 0x24], ecx
add dword [esp + 0x24], 1
cmp al, 0x3e
mov eax, 0xe
cmove ebp, eax
jmp 0x40b0d0
xor ebp, ebp
cmp byte [edx + 1], 0x3d
mov dword [esp + 0x24], 1
jne 0x40b0e8
mov dword [esp + 0x24], 2
mov bp, 0x15
jmp 0x40b0d0
xor eax, eax
cmp byte [edx + 1], 0x26
sete al
mov ebp, eax
mov dword [esp + 0x24], eax
lea ebp, [ebp + ebp*8 + 0x12]
add dword [esp + 0x24], 1
jmp 0x40b0d0
mov dword [esp], str.left_operand_is_a_float__integer_0_assumed
call fcn.00412380
jmp 0x40b2c2
mov dword [esp], str.right_operand_is_a_float__integer_0_assumed
call fcn.00412380
jmp 0x40b2fd
lea ecx, [edx + 2]
mov dword [0x4d5168], ecx
movzx eax, byte [edx + 2]
mov edx, ecx
jmp 0x40b265
cmp ecx, 0x1f
jbe 0x40b583
lea eax, [ebx - 0xd]
cmp eax, 1
ja 0x40b583
mov dword [esp + 4], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x1f
mov dword [esp + 8], 0
mov dword [esp], str.shift_count
call fcn.00412880
xor ecx, ecx
mov dword [esi + 8], 0
jmp 0x40b583
mov dword [esp + 0x24], 2
mov ebp, 0x11
jmp 0x40b0d0
mov dword [esp + 0x24], 2
mov ebp, 0x19
jmp 0x40b0d0
mov dword [esp + 0x24], 2
mov ebp, 0x16
jmp 0x40b0d0
mov dword [esp + 0x24], 2
mov ebp, 0x18
jmp 0x40b0d0
mov eax, dword [esp + 0x40]
cmp ebx, 0x13
mov byte [esi + 0xc], bl
mov dword [esi + 4], eax
je 0x40ba2b
cmp ebx, 0x14
jne 0x40b17d
mov ecx, dword [esi + 8]
mov edi, dword [esp + 0x48]
movzx eax, byte [esp + 0x4d]
mov edx, ecx
sub edx, edi
mov dword [esi + 8], edx
movzx edx, byte [esi + 0xd]
xor eax, edx
shr al, 1
and eax, 1
cmp ecx, edi
jae 0x40b8e9
xor eax, 1
add eax, eax
and edx, 0xfffffffd
or edx, eax
mov byte [esi + 0xd], dl
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x1c], eax
jne 0x40b187
mov eax, dword [esp + 0x1c]
cmp eax, 0x49a130
je 0x40b1f0
cmp eax, 0x49a088
je 0x40b1f0
cmp eax, dword [0x4d504c]
je 0x40b1f0
cmp eax, dword [0x4d502c]
je 0x40b1f0
mov eax, dword [esi]
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0041b910
test eax, eax
jne 0x40b1f0
mov eax, dword [esp + 0x40]
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0041b910
test eax, eax
mov eax, 0x49a130
cmovne eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
jmp 0x40b1f0
mov ebp, dword [eax*4 + 0x49e520]
test ebp, ebp
je 0x40b390
mov dword [esp + 0x24], 1
mov edi, ebp
jmp 0x40b060
mov dword [esp + 8], 0x49e4f9
mov dword [esp + 4], 0x6ee
mov dword [esp], str..._.._binutils_gas_expr.c
call fcn.00412570
mov edx, dword [0x4d5168]
movzx eax, byte [edx]
jmp 0x40affb
mov dword [esp + 8], 0x49e4f9
mov dword [esp + 4], 0x6e2
mov dword [esp], str..._.._binutils_gas_expr.c
call fcn.00412570
jmp 0x40afd0
movzx eax, byte [edx + 1]
cmp al, 0x3d
je 0x40bc36
cmp al, 0x3e
nop
jne 0x40bb85
mov ebp, 0xe
mov dword [esp + 0x24], 2
mov edi, ebp
jmp 0x40b060
cmp byte [edx + 1], 0x3d
jne 0x40b390
mov edi, 0x15
mov ebp, 0x15
mov dword [esp + 0x24], 2
jmp 0x40b060
mov ecx, dword [esi + 8]
movzx eax, byte [esi + 0xd]
movzx edi, byte [esp + 0x4d]
mov edx, dword [esp + 0x48]
xor edi, eax
and eax, 0xfffffffd
add edx, ecx
mov dword [esp + 0x2c], edx
mov dword [esi + 8], edx
mov edx, edi
shr dl, 1
mov edi, edx
and edi, 1
lea edx, [edi + edi]
or eax, edx
mov byte [esi + 0xd], al
cmp ecx, dword [esp + 0x2c]
jbe 0x40b17d
xor edi, 1
and eax, 0xfffffffd
lea edx, [edi + edi]
or eax, edx
mov byte [esi + 0xd], al
jmp 0x40b17d
mov edi, dword [esi + 8]
xor eax, eax
test edi, edi
je 0x40ba87
xor eax, eax
test ecx, ecx
setne al
mov dword [esi + 8], eax
jmp 0x40b17d
xor eax, eax
cmp ecx, dword [esi + 8]
setl al
neg eax
mov dword [esi + 8], eax
jmp 0x40b17d
xor eax, eax
cmp ecx, dword [esi + 8]
setle al
neg eax
mov dword [esi + 8], eax
jmp 0x40b17d
xor eax, eax
cmp ecx, dword [esi + 8]
setge al
neg eax
mov dword [esi + 8], eax
jmp 0x40b17d
xor eax, eax
cmp ecx, dword [esi + 8]
setg al
neg eax
mov dword [esi + 8], eax
jmp 0x40b17d
xor eax, eax
cmp ecx, dword [esi + 8]
setne al
neg eax
mov dword [esi + 8], eax
jmp 0x40b17d
xor eax, eax
cmp ecx, dword [esi + 8]
sete al
neg eax
mov dword [esi + 8], eax
jmp 0x40b17d
mov edx, dword [esi + 8]
movzx edi, byte [esi + 0xd]
mov eax, edx
sub eax, ecx
mov dword [esi + 8], eax
mov eax, edi
shr al, 1
and eax, 1
cmp edx, ecx
jae 0x40b17d
xor eax, 1
lea edx, [eax + eax]
mov eax, edi
and eax, 0xfffffffd
or eax, edx
mov byte [esi + 0xd], al
jmp 0x40b17d
and dword [esi + 8], ecx
jmp 0x40b17d
xor dword [esi + 8], ecx
jmp 0x40b17d
shr dword [esi + 8], cl
jmp 0x40b17d
xor eax, eax
or ecx, dword [esi + 8]
setne al
mov dword [esi + 8], eax
jmp 0x40b17d
shl dword [esi + 8], cl
jmp 0x40b17d
mov eax, dword [esi + 8]
cdq
idiv ecx
mov dword [esi + 8], edx
jmp 0x40b17d
mov eax, dword [esi + 8]
cdq
idiv ecx
mov dword [esi + 8], eax
jmp 0x40b17d
imul ecx, dword [esi + 8]
mov dword [esi + 8], ecx
jmp 0x40b17d
mov edi, 0x1a
mov ebp, 0x1a
mov dword [esp + 0x24], 1
jmp 0x40b060
mov edi, 0x16
mov ebp, 0x16
mov dword [esp + 0x24], 2
jmp 0x40b060
mov eax, dword [esp + 0x1c]
mov dword [esp], esi
mov dword [esp + 8], eax
lea eax, [esp + 0x40]
mov dword [esp + 4], eax
call fcn.00424650
test eax, eax
je 0x40bc16
cmp dword [esp + 0x1c], 0x49a130
je 0x40bc0a
mov eax, dword [esp + 0x1c]
cmp eax, 0x49a088
je 0x40bc0a
cmp dword [0x4d504c], eax
je 0x40bc0a
cmp dword [0x4d502c], eax
je 0x40bc0a
mov eax, dword [esi]
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0041b910
test eax, eax
je 0x40bc78
mov eax, dword [esp + 0x40]
cmp eax, dword [esi]
je 0x40bc98
movzx eax, byte [esp + 0x4c]
jmp 0x40b4c5
mov dword [esp], 0x49e440
call fcn.00412380
mov ecx, 1
jmp 0x40b583
mov edi, 0x19
mov ebp, 0x19
mov dword [esp + 0x24], 2
jmp 0x40b060
mov ebp, 0x11
jmp 0x40b9fb
mov edi, 0x18
mov ebp, 0x18
mov dword [esp + 0x24], 2
jmp 0x40b060
mov ebp, 0xd
jmp 0x40b9fb
mov eax, dword [esp + 0x40]
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0041b910
test eax, eax
jne 0x40bc0a
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call fcn.0041dff0
mov edi, eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.0041dff0
lea ecx, [esp + 0x3c]
mov dword [esp + 8], ecx
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.0040c870
test eax, eax
je 0x40bc16
mov eax, dword [esi]
mov dword [esp], eax
call fcn.0041cd70
mov ebx, eax
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call fcn.0041cd70
movzx edx, byte [esi + 0xd]
mov edi, dword [esi + 8]
sub ebx, eax
movzx eax, byte [esp + 0x4d]
mov dword [esp + 0x20], ebx
mov ebx, edi
sub ebx, dword [esp + 0x48]
xor eax, edx
and edx, 0xfffffffd
shr al, 1
and eax, 1
lea ecx, [eax + eax]
or edx, ecx
mov byte [esi + 0xd], dl
cmp edi, dword [esp + 0x48]
mov dword [esi + 8], ebx
jae 0x40bd21
xor eax, 1
and edx, 0xfffffffd
lea ecx, [eax + eax]
or edx, ecx
mov byte [esi + 0xd], dl
mov ecx, dword [esp + 0x3c]
mov edi, ebx
mov edx, eax
xor edx, 1
sub edi, ecx
cmp ebx, ecx
mov ebx, dword [esp + 0x20]
cmovb eax, edx
lea edx, [ebx + edi]
shr ebx, 0x1f
xor eax, ebx
mov ecx, eax
and ecx, 1
lea ebx, [ecx + ecx]
movzx ecx, byte [esi + 0xd]
mov dword [esi + 8], edx
and ecx, 0xfffffffd
or ecx, ebx
cmp edi, edx
mov byte [esi + 0xd], cl
jbe 0x40bd6a
xor eax, 1
and ecx, 0xfffffffd
and eax, 1
add eax, eax
or ecx, eax
mov byte [esi + 0xd], cl
mov byte [esi + 0xc], 2
mov dword [esi], 0
jmp 0x40b1f0